토파즈 정보

히스토리

현재 토파즈에 도달하기까지의 제품 이정표.

토파즈는 공개 마이너 릴리스를 거치며 발전합니다. 공개 마이너 릴리스는 사용자가 설치하는 제품의 경계를 표시합니다.

릴리스

5.20LIT를 완성하고, 소스 전체 감사와 리팩터링으로 Stage 0 컴파일러와 셀프호스트 컴파일러를 맞추었으며, SPEC부터 문서까지 언어 제약을 해소했습니다. 독립된 전체 소스 검토에서 더 손볼 컴파일러 작업이 없음을 확인한 뒤 소스 SHA가 고정된 릴리스 아티팩트를 토파즈 5.20으로 승격했습니다.
패치공개 범위사용자가 얻은 변화
5.20.0공개5.20.0은 이 라인의 첫 공개 릴리스입니다. 셀프호스티드 컴파일러가 기본 경로가 되고, 내장 리스펙스 평가기는 리스펙스 1.20.0으로 올라갑니다. 소스는 github.com/studiohaze/topaz 에 공개되어 있습니다.
5.19.815내부공유 코퍼스 매니페스트 디코더가 단계와 버전과 결과가 모두 채워지고 소스가 파일 하나 또는 디렉터리 하나이며 결과에 맞는 코드가 붙고 기록된 합계가 일치할 때만 픽스처 행을 받아들입니다. 불완전한 행은 빈 값으로 넘어가지 않고 거부됩니다.
5.19.814내부v5.4 패키지와 검사와 성능 점검 코퍼스의 매니페스트를 topaz check-corpus 와 같은 디코더로 읽습니다. 형식이 어긋나거나 알 수 없는 매니페스트 줄은 별도 읽기 경로에서 조용히 무시되지 않고 어디서나 거부됩니다.
5.19.813내부v5.4 패키지 실행과 시험 코퍼스가 런타임 오류를 예상하는 행도 실행하므로 예상 오류 코드와 메시지와 오류 직전 출력까지 확인합니다. 새 패키지 픽스처는 출력을 남긴 뒤 정수를 0으로 나누는 TPZ4002 로 멈춥니다.
5.19.812내부코퍼스의 예상 출력 파일이 뜻 있는 마지막 빈 줄을 유지합니다. 마지막 줄바꿈 하나만 파일 종결자로 보므로 빈 줄로 끝나는 프로그램의 출력도 잘려나간 기록과 대조되지 않고 정확히 비교됩니다.
5.19.811내부topaz run 과 네이티브 빌드가 -- 뒤 인자를 프로그램이 main(args, stdin) 을 내보낼 때만 받습니다. 진입점이 없는 프로그램은 인자를 조용히 버리지 않고 실행 전에 거부합니다.
5.19.810내부셀프호스트 컴파일러로 topaz test 를 돌려도 파이프로 들어온 표준 입력이 유지됩니다. 시험 모드가 입력을 빈 문자열로 바꾸던 문제를 고쳐서 --compiler self 에서 main(args, stdin) 을 읽는 프로그램이 topaz run 과 같은 입력을 받습니다.
5.19.809내부패키지 빌드와 실행과 문서 생성이 같은 경로를 써서 패키지를 한 번만 해석하고 검사합니다. 명령의 동작과 진단과 출력은 그대로입니다.
5.19.808내부topaz testmain(args, stdin) 을 내보내는 프로그램에 파이프 표준 입력을 그대로 넘겨 topaz run 과 같아집니다. 코퍼스의 패키지 시험도 외부 함수 재생을 유지하고 명령줄과 같은 종료 상태 규칙을 적용합니다.
5.19.807내부검사와 편집기 지원과 코퍼스 단계가 검사기 입력 모듈을 하나의 공유 경로로 만듭니다. 모듈 식별과 진입점과 외부 함수 역할과 소스 조각과 모듈 순서가 그대로 유지되고 각 호출부의 진단과 동작도 달라지지 않습니다.
5.19.806내부존재하지만 읽을 수 없는 임포트 디렉터리를 더 이상 없는 것으로 보고하지 않습니다. 읽을 수 없는 디렉터리와 소스, UTF-8 이 아닌 이름의 항목은 컴파일러와 편집기 서버 양쪽에서 TPZ3001 대신 TPZ3003 을 냅니다.
5.19.805내부.stdin.args.defer 같은 코퍼스 사이드카 파일은 정말로 없을 때만 없는 것으로 봅니다. 읽을 수 없거나 UTF-8 이 아닌 사이드카는 입력이나 예상 관찰을 조용히 버리지 않고 경로와 함께 실패하며 가상 파일 블록은 유일한 경로와 정확한 구분자를 요구합니다.
5.19.804내부디렉터리 모양의 코퍼스 픽스처를 정확히 읽습니다. 없거나 읽을 수 없는 픽스처 파일이 그 행이 기대하던 진단을 만들어 우연히 통과하는 일이 사라졌고 UTF-8 이 아닌 경로와 일반 파일이 아닌 항목과 중복 경로와 매니페스트에 어긋나는 진입 표시를 거부합니다.
5.19.803내부코퍼스 매니페스트 읽기가 잘못된 입력을 경로와 줄 번호와 함께 알립니다. 합계가 빠지거나 중복된 경우와 숫자가 아닌 개수와 중복되거나 따옴표 없는 픽스처 키와 잘못된 시계 값을 거부하며 빈 파일을 행이 없는 매니페스트로 오해하지 않습니다.
5.19.802내부인터프리터의 실행 코퍼스 검사가 영역별 개수를 다시 합산해 스스로와 견주던 부분을 뺐습니다. 영역별 개수 확인과 모든 행의 파싱과 실행과 정확한 출력 기록과 중단 코드 및 메시지 대조는 그대로 남습니다.
5.19.801내부예제 문서의 출력 프로그램 여덟 개를 코퍼스 안 정본 소스에서 바로 실행합니다. 바이트가 같은 사본 여덟 개와 그것을 원본과 견주던 검사를 없앴고 예상 출력 파일은 그대로 같은 프로그램 출력을 확인합니다.
5.19.800내부인터프리터가 외부 함수를 (int) -> int 같은 함수 타입에 맞춥니다. 인자 개수와 기본값과 가변 인자 여부를 생성된 코드와 같은 방식으로 읽으며 외부 함수를 재생하는 패키지가 topaz runtopaz build --run 양쪽에서 올바로 동작합니다.
5.19.799내부결정론적 호스트의 가상 파일이 원시 바이트를 그대로 보관하므로 0x80 같은 바이트를 쓴 프로그램이 쓴 것을 그대로 다시 읽습니다. 텍스트 읽기와 쓰기는 UTF-8 보기로 남고 디렉터리 목록은 원시 바이트 크기를 보고합니다.
5.19.798내부컴파일러 관찰 출력을 만드는 마지막 단계가 루트 요약값과 매니페스트 항목과 크기 예산을 이미 맡고 있던 하나의 경로로 합쳐졌습니다. 구성원 순서와 해시와 매니페스트 바이트와 예산 오류 문구와 산출물은 그대로입니다.
5.19.797내부편집기용 미리보기 투영이 모듈마다 위치 색인 하나를 만들어 스코프와 선언과 참조와 내보내기와 타입 사실을 읽습니다. 사실마다 구문 트리 전체를 다시 훑지 않으며 첫 일치 규칙과 보고되는 사실은 그대로입니다.
5.19.796내부부호 있는 64비트 최댓값을 한 칸 넘어서는 십진 정수 리터럴이 관찰 결과에서 빈 값이 되지 않고 적힌 표기를 그대로 유지합니다. Stage 0 과 셀프호스트 컴파일러가 그 값을 같은 방식으로 보고하며 기간 상한 관찰은 그대로입니다.
5.19.795내부컴파일러 관찰 검사 하나가 같은 요청을 두 번 돌려 결과를 자기 자신과 견주지 않습니다. 한 번만 컴파일하고 관찰하며 반입 검증과 일부러 다르게 만든 결과물과의 비교와 정확한 투영 내용과 손상된 투영 거부와 자원 상한은 그대로 남습니다.
5.19.794내부Html.Text("ready")Command.Dispatch(Msg.Ready) 같은 생성자 호출이 주변 문맥에서 정확한 호출 대상과 특수화된 결과 타입을 받습니다. 결과를 알 수 없는 타입으로 만들던 std.dom 모듈 전용 예외 네 건을 없앴습니다.
5.19.793내부수신자 메서드 호출이 그 메서드를 정의한 모듈을 함께 보고하므로 직접 호출과 파이프라인 호출 모두에서 지역 대상은 main::Point 로, 임포트한 대상은 model::Point 로 읽힙니다. 5.20 내보내기 표현은 메서드 매개변수와 반환 타입과 이 식별을 같은 정본 형태로 담습니다.
5.19.792내부호출 관찰이 일반 호출과 선택적 호출과 멤버 호출에서 검사기가 직접 만든 호출 대상 근거를 담고 파이프라인 단계는 참조가 유일하고 멤버 이름이 맞을 때만 호출 대상을 기록합니다. 두 컴파일러가 직접 호출과 선택적 호출과 파이프라인 호출에서 같은 모양을 보고합니다.
5.19.791내부셀프호스트 검사기가 Option<T>value?.run(41) 처럼 제네릭 선택 값에 대한 수신자 호출을 Stage 0 과 같은 방식으로 타입 검사합니다. 인자를 한 번만 추론하고 유니온 갈래마다 자기 시그니처로 검사하며 TPZ5006TPZ5005TPZ5003 보고는 그대로입니다.
5.19.790내부Option<Array<int>>?.get(0)runner?.run(41) 같은 선택적 호출이 검사를 지나며 특수화된 호출 대상 타입을 유지하므로 다음 단계가 셀프호스트 컴파일러와 같은 호출 표현을 봅니다. 런타임 동작과 언어 의미는 그대로입니다.
5.19.789내부사용자가 정의한 수신자 메서드 호출이 호출 자리에서 특수화된 함수 타입을 유지하므로 이름 인자와 기본값을 쓰는 메서드가 Stage 0 과 셀프호스트 컴파일러에서 같은 표현으로 내려갑니다. 런타임 동작과 언어 의미는 그대로입니다.
5.19.788내부셀프호스트 컴파일러가 함수 매개변수 기본값을 매개변수 옆에 매개변수 순서대로 놓아 일반 함수와 메서드에서 Stage 0 과 같아집니다. 런타임은 이 모양을 읽으면서 봉인된 컴파일러 이미지의 예전 중첩 모양도 계속 받아들입니다.
5.19.787내부낮춘 표현을 공개하는 셀프호스트 컴파일러가 더 이상 모든 연산의 호출 정보를 비워 두지 않습니다. 이미 가지고 있던 호출 대상과 수신자와 인자와 평가 순서 사실로 호출 정보를 다시 만들며 값 호출과 멤버 호출과 파이프라인 호출을 모두 담습니다.
5.19.786내부Stage 0 의 낮추기가 일반 함수의 바인딩 식별과 페이로드 없는 열거 변형을 지역 바인딩이 아니라 생성자로 보는 처리와 내보내는 표현 증거에서 셀프호스트 쪽과 일치합니다. 스키마와 진단과 실행은 그대로입니다.
5.19.785내부lead |> absent?.get(sideEffect(_)) 처럼 파이프라인 안에 있는 선택적 호출이 단락 동작을 유지합니다. 수신자가 없으면 적힌 인자를 계산하지 않고 None 을 돌려주며 컴파일된 산출물도 이 가드를 버리지 않고 확인합니다.
5.19.784내부타입 검사 모음에서 값을 자기 자신이나 자기 복제본과 견주던 비교가 여섯 곳 있었습니다. 이제 따로 만든 ArrayMap 과 레코드와 외부 값을 써서 동일성이 아니라 구조적 동등성과 비교 불가 값의 정적 거부를 관찰합니다.
5.19.783내부최상위 초기화 식이 &&||?? 의 오른쪽이나 선택적 호출의 인자에서 뒤에 오는 바인딩을 참조할 수 있습니다. 그 자리는 왼쪽이나 수신자가 허용할 때만 실행되므로 정적으로 막지 않으며 실제로 너무 일찍 실행되면 기존 런타임 미바인딩 오류가 그대로 적용됩니다.
5.19.782내부읽을 수 없거나 UTF-8 이 아닌 소스 파일을 더 이상 없는 파일로 보고하지 않습니다. 진입점과 임포트 해석이 그런 파일에 대해 TPZ3001 대신 로더 진단 TPZ3003 을 냅니다.
5.19.781내부자기 자신과 견주는 검사 말고는 쓰이는 곳이 없던 파서 보조 함수를 모듈 내부로 감추고 그 검사를 지웠습니다. 토큰 보존과 관찰에 쓰이는 단계별 파싱 표면은 그대로이며 파싱과 구문 트리와 진단도 달라지지 않습니다.
5.19.780내부동결된 v5.1 픽스처 개수와 v5.2 영역 표를 한 곳에서 소유하고 파서 검사와 topaz check-corpus 가 함께 읽습니다. 같은 표의 사본 둘이 일치한다는 것만 증명하던 검사는 없앴고 개수 자체는 그대로입니다.
5.19.779내부선택 임포트에서 이름이 겹칠 때 뒤에 오는 문제 항목마다 TPZ2011 을 소스 순서대로 정확히 한 번씩 냅니다. 내보낸 이름과 지역 바인딩 두 축이 함께 부딪히면 내보낸 이름이 앞서며 두 컴파일러가 같은 결과를 냅니다.
5.19.778내부NoneOption 생성자이므로 바인딩 이름으로 쓸 수 없습니다. None 이라는 이름의 상수 선언은 그 이름 자리에서 TPZ2012 로 거부되며 Stage 0 과 셀프호스트 파서가 같은 규칙을 적용합니다.
5.19.777내부Python 대조 하니스의 소스 지적 네 건을 정리했습니다. 임시 값을 만드는 쪽으로 바로 넘기고 조건 두 곳을 단순하게 폈으며 컴파일러와 런타임과 언어 소스는 그대로이고 하니스는 픽스처를 계속 어긋남 없이 비교합니다.
5.19.776내부점이나 안전한 점 뒤에서 닿거나 레코드 필드 이름 자리에 적힌 키워드 이름 필드가 더 이상 matchconcurrent 같은 구문으로 배치를 바꾸지 않습니다. 그런 멤버 접근 뒤의 여러 문장 블록과 그런 필드 뒤의 중첩 레코드 패턴이 올바로 파싱됩니다.
5.19.775내부파이프라인 단계가 인자 어디에 있든 _ 자리표시자를 찾고 중첩된 파이프라인 앞에서 멈춥니다. 자리표시자가 없는 단계는 흘러온 값을 첫 인자로 그대로 받고 자리표시자가 있는 단계는 적힌 위치 인자와 이름 인자와 스프레드 인자를 모두 지킨 채 소스 순서대로 계산합니다.
5.19.774내부Stage 1 과 Stage 2 컴파일러 이미지 식별값을 툴체인을 빌드할 때 한 번 적어 두므로 값을 물어볼 때마다 내장 이미지 전체를 다시 해싱하지 않습니다. 이미지 바이트와 매니페스트와 실행 전 이미지를 검증하는 별도 검사는 그대로입니다.
5.19.773내부필요한 Rust 툴체인 버전을 세 곳에 따로 적어 두지 않고 패키지 메타데이터에서 읽습니다. 봉인된 매니페스트는 같은 버전을 그대로 기록하며 이미지 바이트와 런타임 동작과 언어 의미는 달라지지 않습니다.
5.19.772내부간결 컴파일러 이미지를 만들 때 길이만 보고 곧바로 직렬화하던 임시 목록 세 개를 더 만들지 않습니다. 이미지 스키마와 순서와 바이트는 똑같고 매니페스트와 런타임 동작도 그대로입니다.
5.19.771내부Stage 2 고정점 도구가 입력 경로를 정확히 하나만 받고 인자가 없거나 남으면 아무것도 읽기 전에 거부합니다. 경로 이름은 운영체제가 주는 형태 그대로 받아들이며 만들어지는 보고서 모양은 그대로입니다.
5.19.770내부Stage 1 컴파일러 이미지용으로 남아 있던 카나리아 도구를 없앴습니다. 부르는 곳이 더 없었고 공식 생성 경로와 비교 경로가 이미 맡고 있는 응답과 출처 처리를 중복으로 들고 있었습니다.
5.19.769내부Stage 2 두 번째 회차 생성기가 옵션을 한 번에 읽고 값이 빠졌거나 중복이거나 알 수 없는 옵션이면 생성 전에 거부합니다. 옵션 처리와 요약값 계산과 원자적 쓰기는 Stage 1 생성기와 함께 씁니다.
5.19.768내부Stage 1 이미지 생성기가 인자를 한 번만 읽고 값이 빠진 옵션과 중복되거나 알 수 없는 옵션과 쓰이지도 않을 입력 매니페스트를 거부합니다. 생산자를 지정하지 않았을 때만 해석 방식이 기본이 되고 링크 방식은 매니페스트를 먼저 읽습니다.
5.19.767내부Stage 1 비교 도구가 같은 출력을 두 번 만들어 일치했다고 안정성을 주장하지 않습니다. 한 번만 생성하고 링크 경로와 해석 경로가 같은 소스를 내놓아야 하며 컴파일과 실행 확인과 이미지 식별과 손상 및 잘못된 생산자 거부는 그대로 남습니다.
5.19.766내부같은 출력을 두 번 만들어 자기 자신과 견주던 검사 두 개를 없앴고 이름도 실제로 관찰하는 성질에 맞게 바꿨습니다. 완료 상태와 타입과 낮춘 표현과 내보내기와 생성 소스 표면과 매니페스트 반입과 결과를 컴파일해 42 를 얻는 확인은 그대로 남습니다.
5.19.765내부검사 픽스처 호스트가 소스 텍스트를 프로그램 전체 수명 값으로 요구하지 않고 빌려 씁니다. 그래서 동적으로 만든 소스 세 개를 흘려 둘 필요가 없어졌고 픽스처 텍스트와 검사가 관찰하는 내용은 그대로입니다.
5.19.764내부컴파일러가 내보내는 JSON 의 숫자를 텍스트로 찍었다가 일반 읽기 경로로 되파싱하지 않고 곧바로 만듭니다. 정확한 십진 표기와 키 순서와 필드 이름과 개수와 서수와 위치는 그대로입니다.
5.19.763내부타깃 어댑터 투영이 부모와 필드와 이름을 찾을 때마다 같은 구문 트리를 다시 훑지 않고 모듈마다 색인 하나를 만듭니다. 이름 개수와 첫 내보내기 함수 선택과 멤버와 페이로드와 기본값과 모양 투영은 그대로입니다.
5.19.762내부정본 모양을 그대로 베낀 레코드 타입 세 개와 호스트 사실과 디렉터리 항목과 생성된 표준 모듈을 다시 만들던 변환 두 개를 셀프호스트 컴파일러의 요청 계층에서 없앴습니다. 필드 이름과 모양과 사실 순서와 중복 처리는 그대로입니다.
5.19.761내부셀프호스트 컴파일러의 프로파일러가 조회할 때마다 식별값을 구분자 문자열로 엮지 않고 타입이 있는 중첩 맵으로 참조를 색인하며 목록 하나가 원본 참조와 대상 색인과 멤버 색인을 함께 소유합니다. 프로파일 판정과 코드와 메모와 위치와 순서는 그대로입니다.
5.19.760내부낮춘 연산 목록을 셀프호스트 이미터가 한 번만 훑어 첫 등장 색인과 정렬된 런타임 잎을 담은 목록 하나를 만듭니다. 맵을 따로 만들고 같은 목록을 다시 훑지 않으며 연산 상한과 닫힌 정수 계산과 만들어지는 바이트는 그대로입니다.
5.19.759내부셀프호스트 컴파일러의 검사기가 내부 레코드 타입 열아홉 개를 모듈 안에만 둡니다. 내보내는 것은 검사 진입점 하나뿐이며 필드와 조회와 단계와 진단과 위치는 예전 그대로 동작합니다.
5.19.758내부셀프호스트 컴파일러의 이름 해석이 읽기와 포함 확인과 디렉터리 목록마다 사실 목록 전체를 훑지 않고 종류별 경로 색인으로 호스트 사실을 찾습니다. 질의 순서와 중복 시 첫 일치와 상태와 페이로드 바이트와 진단은 그대로입니다.
5.19.757내부파서 상태 레코드를 셀프호스트 컴파일러 모듈 내부로 감췄습니다. 같은 상태가 공개 진입점 뒤에 있는 Stage 0 과 모양이 맞으며 내보내는 파싱 함수와 구문 트리와 진단과 메모와 위치와 복구는 그대로입니다.
5.19.756내부생성된 표에서 쓰이지 않던 Unicode 버전 상수를 없앴습니다. 고정된 Unicode 16.0.0 자료의 권한은 생성기 한 곳에 그대로 있고 생성 헤더도 그 사실을 계속 적으며 문자 범위와 매핑 바이트는 하나도 달라지지 않았습니다.
5.19.755내부셀프호스트 컴파일러의 Unicode 보조 함수 가운데 자기 모듈 안에서만 쓰이던 셋을 내부로 감춰 내보내는 함수가 일곱 개로 줄었습니다. 시그니처와 본문과 호출부와 Unicode 16.0 표는 그대로입니다.
5.19.754내부이름 해석이 토큰 그래프 탐색으로 옮겨간 뒤 필요 없어진 내보내기를 들고 있던 렉서 보조 함수 네 개를 내부로 감췄습니다. 내보내는 것은 렉싱 진입점과 키워드 조회 둘만 남았고 시그니처와 본문과 호출부는 그대로입니다.
5.19.753내부페이로드 레코드와 스키마 상수 셋이 셀프호스트 컴파일러의 이미터 모듈 안에만 남아 내보내기는 방출 단계 하나뿐이고 한 모듈은 필요 없던 임포트를 뺐습니다. 스키마 값과 만들어지는 바이트와 출처 정보는 그대로입니다.
5.19.752내부자기 모듈 안에서만 쓰이던 출처 스키마 상수 하나를 더는 내보내지 않습니다. 값 자체와 그 값이 만드는 바이트와 읽는 쪽의 별도 검증은 그대로입니다.
5.19.751내부아무도 쓰지 않던 교환용 레코드 하나와 참조되지 않던 임포트를 함께 지웠습니다. 요청 반입은 자기 전용 레코드를 그대로 쓰고 패키지 처리와 진단과 위치와 출력 모양은 달라지지 않았습니다.
5.19.750내부셀프호스트 파서의 임포트 처리에 남아 있던 쓰이지 않는 지역 값을 지웠습니다. 임포트 경로와 선택과 별칭과 파서 위치와 복구와 진단과 위치 정보는 예전과 똑같이 동작합니다.
5.19.749내부macOS 내부 실행 감독자가 기존 시간과 메모리 감시 아래에서 요청 쓰기와 출력 읽기를 동시에 하므로 읽기를 멈춘 자식 프로세스가 진행을 막지 못합니다. 중괄호가 겹쳐 들어가 JSON 읽기를 깨뜨리던 결과 파일도 다시 올바른 객체 하나로 나옵니다.
5.19.748내부macOS 내부 샌드박스 감독자가 자식 프로세스에 요청을 쓰는 일과 출력을 읽어내는 일을 실제 시간 감시 아래에서 동시에 합니다. 입력을 전혀 읽지 않는 자식이 제한 시간 처리가 시작되기 전에 감독자를 막을 수 없습니다.
5.19.747내부관리 아티팩트의 설치와 준비, 오래된 파일 정리가 상위 디렉터리마다 심볼릭 링크가 아닌 실제 디렉터리를 요구합니다. 예전 Python 마이그레이션은 링크된 캐시 디렉터리와 그것이 가리키는 바깥 내용을 건드리지 않고 남깁니다.
5.19.746내부셀프호스트 컴파일러가 성공한 결과뿐 아니라 최종 결과 전체에 프로필 검사를 적용합니다. 거부된 프로그램도 구문 오류와 함께 TPZ2001 같은 프로필 진단을 그대로 지녀 Stage 0 컴파일러와 같은 결과를 보고합니다.
5.19.745내부명령줄 도구가 실제 결과에 닿지도 못한 채 버려지던 자리표시 컴파일 기록을 더 이상 만들고 검사하지 않습니다. 검사 결과는 실제 컴파일에서 곧바로 나오며 보고되는 내용은 그대로입니다.
5.19.744내부5.6.1 이전 웹 출력 디렉터리 마이그레이션이 로더에 토파즈가 직접 생성하는 서명 세 개가 모두 있을 때만 그 폴더를 자기 것으로 봅니다. 이름만 스친 사용자 번들은 정리 대상이 되지 않고 자바스크립트와 WASM, Cargo.toml 파일을 그대로 지킵니다.
5.19.743내부윈도우 확장 드라이브 경로와 UNC 경로를 명령에 안전한 형태로 바꾸는 처리를 한 곳으로 합쳤습니다. 똑같은 구현이 두 벌 있던 자리이며 작업 공간 루트와 빌드 출력, 소스, 로그 경로 동작은 이전과 같습니다.
5.19.742내부설치된 리스펙스 제품을 찾을 때 네 개의 아티팩트 신원을 고정된 표 하나에서 읽고 순서와 상태, 호스트, 경로, 크기, 해시를 공통 판정 하나로 확인합니다. 표시되는 정보와 실행 요청은 그대로입니다.
5.19.741내부리스펙스 애플리케이션 계획과 호스트 판정이 여섯 개로 흩어져 있던 항목 대신 잠긴 규칙 신원 기록 하나를 들고 다니며 제한 프로필과 전체 프로필이 같은 방식으로 그 기록을 만듭니다. 동작과 잠금·아티팩트 검사는 그대로입니다.
5.19.740내부가져오기 순환 보고가 단계마다 모든 간선을 다시 훑는 대신 순환 묶음마다 정렬된 이웃 목록을 따라갑니다. TPZ3006 메시지와 위치, 순환 하나에 진단 하나라는 규칙은 그대로입니다.
5.19.739내부미리보기 관측을 만들 때 요청을 직렬화한 뒤 단계를 고치려고 다시 파싱하고 또 인코딩하던 과정을 없앴습니다. 공통 파일을 호출자의 실제 단계로 한 번에 모으며 관측 내용과 스키마, 진단은 그대로입니다.
5.19.738내부검사기가 호출 지점 정보를 일곱 항목으로 흩어 넘기지 않고 기록 하나로 호출 해석과 완성, 타입 스킴 적용까지 들고 갑니다. 모듈 검사 결과도 깊게 중첩된 튜플 대신 이름 있는 기록으로 돌려주며 언어 의미와 진단은 그대로입니다.
5.19.737내부인터프리터의 런타임 타입 검사가 별칭 순환 기록과 오류 위치를 상태값 하나에 담고, 열거형과 레코드, 뉴타입 검사는 런타임 정의를 곧바로 읽습니다. 인터프리터 동작과 오류 코드, 오류 위치는 그대로입니다.
5.19.736내부Python 백엔드가 모듈마다 런타임 내보내기 표를 한 번만 만들고 네임스페이스 가져오기와 읽기 전용으로 공유합니다. 깊은 복사를 하던 자리이며 생성되는 Python 코드와 순서, 오류 동작은 그대로입니다.
5.19.735내부컴프리헨션 본문이 모음 종류와 어긋난 프로그램을 본문 실행 전에 소스 위치와 함께 거부합니다. 예전에는 이런 불일치가 엉뚱한 자리에 쌓이면서 조용히 빈 모음을 돌려주었습니다.
5.19.734내부빌드 시점의 검사 하나가 생성된 컴파일러 매니페스트 전체를 확인하여 중복된 JSON 키와 알 수 없는 항목을 거부하고 컴파일러 페이로드도 압축 전에 확인합니다. 런타임은 매니페스트 바이트를 다시 파싱하지 않고 그 확인된 결과를 읽습니다.
5.19.733내부리스펙스 제품 검사가 지금 배포된 릴리스를 그대로 기술하며 호스트에 올라간 기능은 전부 구현되어 있고 지원되지 않는 기능은 없습니다. 과거 전용 자료는 선택 활성화 뒤로 옮겼고 보관된 기록 자체는 그대로 둡니다.
5.19.732내부패키지를 vendor 디렉터리로 복사할 때 대상을 건드리기 전에 후보의 이름과 버전, 해시를 확인하고 심볼릭 링크 상위 경로를 거부하며 실패하면 끝나지 않은 교체를 되돌립니다. topaz.toml.tpz 소스는 일반 파일이어야 합니다.
5.19.731내부topaz.toml 이 알 수 없는 항목을 거부하고 버전과 경로를 함께 선언한 의존성도 거부합니다. topaz.lock 은 루트 행 하나와 직접 의존성마다 한 행만 허용하며, 매니페스트와 잠금 파일 읽기는 패키지 안에 머물면서 바깥을 가리키는 링크를 거부합니다.
5.19.730내부패키지의 재생 픽스처와 선택 아티팩트를 엄격한 패키지 파일 읽기로 가져옵니다. 경로 어느 마디의 심볼릭 링크도, 패키지 루트 바깥으로 벗어나는 경로도, 일반 파일이 아닌 것도 거부하며 잠금 확인과 런타임 재생이 같은 바이트를 씁니다.
5.19.729내부내보낸 letconst 를 셀프호스트 경로와 문서, 내보내기 목록이 제대로 알아봅니다. 타입 선언이 없다고 보고되던 자리입니다. 모듈은 최상위를 정확히 한 번만 실행하므로 내보낸 초기화 코드가 두 번 작동하지 않습니다.
5.19.728내부Map.filterMap.mapValues 가 콜백을 부르기 전에 삽입 순서대로 쌍을 스냅샷으로 잡습니다. 같은 Map 을 콜백에서 바꾸어도 생성된 Rust 프로그램이 죽지 않으며 변경은 원본 Map 에 그대로 남고 콜백 호출 수도 늘지 않습니다.
5.19.727내부이름 있는 JSON 스키마와 한정된 JSON 스키마를 만들 때 고정된 입력 여덟 가지를 값 하나로 넘기고 순회 상태만 따로 둡니다. 스키마 조회와 제네릭 치환, 재귀, 오류 동작은 그대로입니다.
5.19.726내부생성 Rust 백엔드가 모듈과 함수, 위치 계층에 이름을 붙이고 for 패턴 생성의 고정 입력을 값 하나로 묶으며 읽지도 않던 선언 목록을 더 이상 들고 다니지 않습니다. 생성되는 코드와 오류 동작은 그대로입니다.
5.19.725내부네이티브 호출 경계에서 바이트 레코드를 짧은 이름이 아니라 그것을 선언한 모듈의 신원으로 가려냅니다. 토파즈 5.20 에서는 다른 모듈의 같은 이름 레코드가 더 이상 받아들여지지 않고 토파즈 5.19 의 짧은 이름 동작은 그대로입니다.
5.19.724내부명시된 선언 신원이 있으면 그것을, 없으면 공개 이름을 쓰는 규칙을 런타임마다 한 곳에 모았습니다. 동등 비교와 정렬, MapSet 의 키, 레코드 펼치기, 언래핑, 패턴과 타입 검사가 모두 그 규칙을 읽으며 동작은 그대로입니다.
5.19.723내부집합 스냅샷을 만드는 길이 똑같이 둘 있던 것을 하나로 합쳤습니다. 순회와 Set.toArray , union , intersection , difference 는 순서와 중복 제거, 결과가 모두 그대로입니다.
5.19.722내부Array.sortedBysortBy , retain 이 호출 대상과 항목을 곁에 복사해 두지 않고 대기 상태 하나에서만 읽습니다. 호출 순서와 인자 수, 남긴 항목의 의미, 오류 동작은 그대로입니다.
5.19.721내부배열과 Map 의 고차 콜백이 두 벌로 적혀 있던 단계 규약을 하나로 공유합니다. mapfilter , reduce , Map.filter , Map.mapValues 는 모든 런타임에서 호출 순서와 결과, 오류가 그대로입니다.
5.19.720내부타입 있는 JSON 스키마를 만들 때 쓰는 별칭과 레코드, 열거형, 뉴타입 조회가 네 번 반복되던 모양을 하나로 공유합니다. 조회 결과와 치환, 재귀 한계, 타입 있는 JSON 오류 동작은 그대로입니다.
5.19.719내부스키마 타입 문법을 훑는 두 검사가 각자 모든 타입 마디를 나열하는 대신 소스 순서로 도는 순회 하나를 공유합니다. 토파즈 5.20 이전의 가져온 스키마 거부와 블록 지역 별칭 거부는 이전과 똑같이 동작합니다.
5.19.718내부타입의 네임스페이스 한정이 모든 타입 종류를 손으로 다시 짜지 않고 공통 구조 순회를 씁니다. 네임스페이스 표에 이름이 있는 열거형과 레코드, 뉴타입 마디만 바꾸며 타입 결과는 그대로입니다.
5.19.717내부검사기에 손으로 관리하던 타입 모양 목록 두 개가 더 있었는데 이를 공통 순회로 바꿨습니다. 내보낸 이름 있는 타입 신원 수집과 생성된 리스펙스 운반 타입 봉인은 결과가 그대로입니다.
5.19.716내부검사기가 이름 있는 타입 신원을 바꾸는 일을 처리하는 곳을 하나로 합쳤습니다. 토파즈 5.19 의 선택 가져오기 재결합과 토파즈 5.20 의 모듈 고정 정규화가 똑같이 두 벌로 적혀 있던 자리이며 결과는 둘 다 그대로입니다.
5.19.715내부아직 준비되지 않은 최상위 함수나 let 을 참조하는 경우를 찾을 때 식과 블록이 같은 조회와 같은 기준을 씁니다. TPZ5002 메시지와 첫 위반 위치, const 예외는 그대로입니다.
5.19.714내부검사기가 추론 변수를 모을 때 검사를 둘로 겹쳐 두지 않고 조건을 한 번에 씁니다. 처음 본 순서와 중복 제거는 그대로입니다.
5.19.713내부JSON 스키마 키를 만들 때 실제로 쓰는 값만 받습니다. 선언 목록이 손대지 않은 채 그냥 지나가던 자리이며 키 바이트와 순서, 치환, 재귀 한계, 타입 있는 JSON 결과는 그대로입니다.
5.19.712내부모듈 순환을 보고할 때 기준점을 참조 한 겹 더 거치지 않고 곧바로 넘깁니다. 순환 탐지와 보고되는 경로, 메시지는 그대로입니다.
5.19.711내부모듈 내보내기를 타입과 값 두 가지로만 분류합니다. 함수와 let , const 를 따로 구분해 두었지만 그 차이를 읽는 곳이 없던 자리이며 가져오기 적격성과 제안, 내보내기 진단은 이전과 같습니다.
5.19.710내부값 참조를 해석할 때 뒤이어 진단이 필요한 경우, 곧 가져온 바인딩과 네임스페이스만 알려 줍니다. 평범한 모듈 바인딩은 아무것도 알리지 않으며 읽기와 쓰기, 진단은 그대로입니다.
5.19.709내부지역 값이 가져온 네임스페이스를 가리는지 판단할 때 다른 지역 조회와 같은 어휘 탐색을 씁니다. 거의 같은 탐색이 하나 더 있던 자리이며 가리기와 우선순위, 네임스페이스 진단은 그대로입니다.
5.19.708내부이름 있는 타입을 해석할 때 어휘 스코프를 먼저 보고 지역 바인딩이 없을 때만 모듈 표를 봅니다. 늘 둘 다 조회하던 자리이며 가리기와 우선순위, 해석 실패 보고는 그대로입니다.
5.19.707내부내보낸 시그니처를 검사할 때 공개 타입을 목록에 모았다가 다시 도는 대신 만나는 자리에서 바로 훑습니다. 공개 시그니처의 비공개 타입을 알리는 TPZ3014 는 위치와 순서가 그대로입니다.
5.19.706내부가져오기 표면 검증이 읽지도 않던 현재 모듈 표를 더 이상 받지 않습니다. TPZ3010TPZ3009 메시지와 위치, 순서, 제안은 그대로입니다.
5.19.705내부값 참조를 기록할 때 무엇을 찾았는지 함께 알려 주므로 식별자 경로와 대입 경로가 스코프 탐색과 표 조회를 다시 하지 않습니다. TPZ3012TPZ3015 메시지는 위치와 순서가 그대로입니다.
5.19.704내부네임스페이스 멤버를 해석할 때 내보내기를 한 번만 조회하고 그 결과를 분류와 모든 진단 갈래에서 다시 씁니다. TPZ3013TPZ3010 , TPZ0002 메시지와 비공개 레코드 기본값 예외는 그대로입니다.
5.19.703내부한정된 타입 이름이 네임스페이스 머리를 한 번만 해석하고 그 대상을 멤버와 내보내기, 참조 처리에 다시 씁니다. 잘못된 머리를 알리는 TPZ3013 은 위치와 순서가 그대로입니다.
5.19.702내부셀프호스트 컴파일러에서 참조를 해석할 때 찾은 모듈 바인딩을 함께 돌려주므로 대입 경로와 값 경로가 지역 조회와 표 조회를 다시 하지 않습니다. TPZ3013TPZ3005 메시지는 그대로입니다.
5.19.701내부선택 가져오기 별칭을 타입 자리에서 쓰면 지역 별칭 이름을 기록하므로 셀프호스트 컴파일러와 Stage 0 컴파일러가 같은 참조 대상을 말합니다. 값 자리에서는 여전히 원래 모듈과 내보낸 이름을 기록합니다.
5.19.700내부모듈 표를 만들 때 없는 바인딩을 음수 색인 대신 값 없음으로 다루면서 내보내기 색인을 고르고 충돌인지 삽입인지 가릅니다. TPZ3008 메시지와 중복 내보내기 동작은 그대로입니다.
5.19.699내부네임스페이스 멤버 해석이 없는 내보내기를 음수 색인과 빈 네임스페이스 문자열로 눌러 담지 않고 값 없음 그대로 둡니다. 멤버 의미와 비공개 레코드 기본값 예외, 진단은 모두 그대로입니다.
5.19.698내부읽기 전용 조회가 셀프호스트 컴파일러에서 음수가 될 수 있는 색인을 받아 배열을 다시 뒤지지 않고 모듈 표 기록을 곧바로 가져옵니다. 진단과 순서, 가져오기·내보내기 표면은 그대로입니다.
5.19.697내부모듈 바인딩을 읽기만 하는 셀프호스트 컴파일러의 경로 여덟 곳이 음수가 될 수 있는 색인 대신 바인딩 기록을 곧바로 가져옵니다. 참조 대상과 네임스페이스·내보내기 상태, 진단은 그대로입니다.
5.19.696내부프로토콜 선언을 임시 바인딩으로 먼저 짓지 않고 선언 사실로 곧바로 기록합니다. 순서와 위치, 네임스페이스·내보내기 상태, 진단은 그대로입니다.
5.19.695내부선언 사실을 바인딩마다 통째로 다시 짓지 않고 기존 모듈 바인딩에서 뽑아내며 최종 네임스페이스와 내보내기 여부만 따로 넘깁니다. 사실과 순서, 위치, 진단은 그대로입니다.
5.19.694내부내보낸 이름마다 바인딩 색인과 네임스페이스를 함께 지닌 항목을 한 번만 조회합니다. 같은 이름을 두 번 따로 조회하던 자리이며 내보내기 사실과 순서, 제안, 진단은 그대로입니다.
5.19.693내부모듈마다 중복 없는 내보내기 이름을 정렬해 한 벌 두고 빈 내보내기 판정과 제안, 내보내기 사실이 모두 그것을 다시 씁니다. 예전에는 쓸 때마다 바인딩을 훑고 배열을 새로 정렬했습니다.
5.19.692내부내보내기 사실을 모듈 순서대로 덧붙이고 모듈 안의 이름은 이미 정렬되어 있습니다. 내보낼 때마다 쌓인 목록 전체를 다시 훑고 밀어내던 처리를 없앴으며 결과 순서와 내용은 똑같습니다.
5.19.691내부내보내기 시그니처 검증이 표를 모듈 순서 그대로 위치로 집습니다. 표가 모듈 순서대로 만들어지기 때문이며 검증을 조용히 건너뛸 수 있던 중복 신원 조회가 사라졌습니다.
5.19.690내부모듈 소스 텍스트를 모듈을 파싱할 때 UTF-8 로 한 번만 인코딩하고 이후 단계들이 그 결과를 함께 씁니다. 예전에는 다섯 단계가 저마다 같은 소스 전체를 다시 인코딩했습니다.
5.19.689내부성공적으로 파싱된 모듈이 무엇인지는 통과 모듈 목록 하나만 알고 있습니다. 옆에 신원 집합을 따로 두던 자리이며 탐색과 간선 정리, 순환 보고, 의존성 순서는 그대로입니다.
5.19.688내부가져오기 판정을 한 번에 내리면서 경로와 소스, 물리 별칭, 표준 모듈 출처를 함께 만듭니다. 여섯 곳이 같은 경로를 다시 짓고 같은 사실을 다시 훑던 자리이며 질의 순서와 경로 배정, 별칭 충돌, 진단은 그대로입니다.
5.19.687내부물리 별칭이 겹쳐 거부된 모듈이 자기 가져오기가 가리키는 파일을 호스트에 더 이상 묻지 않습니다. 파싱 전에 따로 돌던 스캐너를 없애고 파서가 만드는 모듈 그래프만 가져오기를 찾으며 TPZ3004 메시지는 그대로입니다.
5.19.686내부가져오기 뒤 주석 안에 쓴 중괄호가 그다음 가져오기를 가리지 않습니다. 모듈 탐색이 중괄호를 세기 전에 줄 주석과 블록 주석을 건너뛰므로 이런 주석이 있는 소스도 파일을 묻는 회차가 더 늘지 않습니다.
5.19.685내부모듈 탐색이 모듈 경로 마디로 진짜 식별자만 받습니다. import functionimport * , import lib.function , import lib.sub"text" 가 더 이상 호스트에 파일을 묻게 하지 않으며 이 형태들은 전에도 가져오기 간선을 만들지 않았습니다.
5.19.684내부점이 들어간 가져오기에서 점 둘레의 공백과 줄바꿈, 주석을 파서와 같은 방식으로 읽습니다. import lib . sub 이 상위 모듈이 아니라 중첩된 모듈 파일을 호스트에 묻습니다. 뒤에 마디가 없는 점은 경로를 반쪽으로 남기지 않고 버립니다.
5.19.683내부import 머리 뒤의 문장 구분자가 모듈 탐색에서도 가져오기를 끝냅니다. import 다음에 줄바꿈이나 세미콜론, 줄 주석이 오면 컴파일러가 호스트에 파일을 묻지 않습니다. 파서는 원래 이런 형태를 가져오기로 읽지 않았습니다.
5.19.682내부모듈 탐색이 줄 주석을 줄바꿈에서만 끝내고 폼 피드를 공백으로 보지 않아 렉서와 같아집니다. 주석 처리된 가져오기 뒤에 캐리지 리턴만 온 경우에도 컴파일러가 호스트에 그 파일을 묻지 않습니다.
5.19.681내부모듈 탐색이 중첩 깊이를 세지 않고 언어 명세대로 첫 닫는 표시에서 블록 주석을 끝냅니다. 해석 결과와 진단, 호스트에 던지는 질문은 그대로입니다.
5.19.680내부식별자가 끝나는 자리를 찾는 일을 셀프호스트 컴파일러의 공통 처리 하나가 맡고 렉서와 모듈 탐색이 함께 씁니다. 기간 접미사와 레이블, 키워드, 태그 붙은 문자열, Unicode 식별자 규칙은 동작이 그대로입니다.
5.19.679내부식별자를 검사할 때 셀프호스트 렉서가 두 벌로 나뉘어 있던 문자 폭 계산을 한 경로로 모읍니다. 식별자를 시작하거나 이어 갈 수 있는 문자는 Unicode 문자와 숫자, 이모지를 포함해 그대로입니다.
5.19.678내부줄 이어짐을 결정하는 토큰 목록을 레이아웃마다 한 곳에서 선언합니다. 줄바꿈 앞뒤로 어떤 토큰이 줄을 잇는지는 앞에만 오는 else 와 뒤에만 오는 쉼표, 굵은 화살표를 포함해 그대로입니다.
5.19.677내부한 줄 문자열 보간 안에서 줄바꿈을 만났을 때의 복구를 Stage 0 렉서가 한 경로로 처리합니다. 직접 만나든 중첩된 문자열에서 만나든 같으며 토큰과 진단, 들여쓰기 검사는 그대로입니다.
5.19.676내부문자열을 검사할 때 셀프호스트 렉서가 구분자 길이를 따로 들고 있지 않고 여러 줄 여부에서 바로 끌어냅니다. 두 값이 어긋나는 상태가 사라졌고 토큰과 진단, 위치는 그대로입니다.
5.19.675내부여러 줄 문자열이 한 줄 보간 안에 놓였을 때 Stage 0 렉서가 감싸는 보간을 두 번 찾지 않고 한 번만 찾습니다. 줄바꿈 복구와 토큰, 진단, 들여쓰기 검사는 그대로입니다.
5.19.674내부Stage 0 렉서의 보간이 한 줄인지 여러 줄인지를 따로 들고 있지 않고 감싸는 문자열에서 그대로 가져옵니다. 둘이 서로 다른 종류를 가리키는 상태가 없어졌고 렉싱 동작은 그대로입니다.
5.19.673내부Stage 0 의 문자열 모드가 여러 줄 들여쓰기 정보를 옆에 둔 별도 스택이 아니라 스스로 들고 있습니다. 둘이 어긋날 여지가 사라졌고 토큰과 진단, 들여쓰기 검사, 복구는 그대로입니다.
5.19.672내부태그 문자열을 검사할 때 셀프호스트 렉서가 문자열 검사 결과를 그대로 넘깁니다. 낱낱이 분해했다 다시 만들지 않으며 태그 템플릿의 토큰 결과는 이전과 똑같습니다.
5.19.671내부일반 코드와 문자열, 보간 검사가 셀프호스트 렉서에서 하나의 결과를 돌려줍니다. 같은 내용을 이름만 달리 담던 두 결과가 사라졌고 렉싱 결과물은 달라지지 않았습니다.
5.19.670내부줄 주석과 블록 주석이 셀프호스트 렉서에서 한 갈래로 들어가고 주석 종류는 한 곳에서 정해집니다. 주석 토큰과 닫히지 않은 주석 진단, //= 토큰은 그대로입니다.
5.19.669내부문자열 검사와 일반 토큰 검사가 셀프호스트 렉서에서 결과 기록을 하나로 함께 씁니다. 같은 내용을 담던 두 벌의 타입 정의가 하나로 줄었고 토큰화와 태그 템플릿 인접, 복구는 그대로입니다.
5.19.668내부모은 토큰과 진단을 넘긴 뒤에는 셀프호스트 렉서의 보간 검사가 호출한 쪽이 실제로 쓰는 값만 돌려줍니다. 이미 넘긴 내용이 밖으로 새지 않으며 문자열 토큰화와 복구는 그대로입니다.
5.19.667내부셀프호스트 레이아웃에서 중괄호의 배치 방식을 고르는 일과 대기 중인 concurrent 표시를 소비하는 일이 한 판단으로 합쳐집니다. 되풀이되던 상태 확인이 사라졌고 모듈 임포트와 레코드 패턴, 본문 배치는 그대로입니다.
5.19.666내부중괄호 미리보기가 셀프호스트 레이아웃에서 두 토큰을 한 번에 읽습니다. 두 번째 토큰을 위해 앞의 줄바꿈을 다시 훑던 일이 사라졌고 레코드 필드 판별과 중괄호 배치 방식은 그대로입니다.
5.19.665내부셀프호스트 컴파일러의 레이아웃 프레임이 배치 방식과 여는 구분자를 자유로운 문자열이 아니라 정해진 값으로 담습니다. 알려지지 않은 값이 들어갈 자리가 없어졌고 레이아웃 결과는 그대로입니다.
5.19.664내부직전 유효 토큰을 없음을 뜻하는 빈 문자열이 아니라 있음과 없음으로 구분해 셀프호스트 레이아웃이 기록합니다. 줄 이어짐 판단과 구분자, 레이아웃 결과는 그대로입니다.
5.19.663내부활성 패턴 구역이 셀프호스트 레이아웃에서 깊이와 종류를 한 값으로 함께 담고, 종류는 바인딩과 case, for 구역으로 한정됩니다. 패턴 배치와 패턴 파이프 이어짐은 그대로입니다.
5.19.662내부셀프호스트 컴파일러의 레이아웃 프레임이 배치 방식과 여는 구분자, 항목 유무를 각각 담던 세 배열 대신 한 스택에 모입니다. 셋이 서로 다른 프레임을 가리킬 여지가 사라졌고 레이아웃 결과는 그대로입니다.
5.19.661내부대기 중인 암묵 구분자를 참거짓 표시와 낡을 수 있는 위치 값이 아니라 하나의 선택적 토큰으로 셀프호스트 레이아웃이 담습니다. 암묵 구분자 자리와 명시적 세미콜론, 토큰 결과는 그대로입니다.
5.19.660내부concurrent 머리말이 잘못 겹친 소스에서 셀프호스트 레이아웃이 엉뚱한 문장 구분자를 만들지 않습니다. 구분자를 만나면 현재 깊이에 남은 표시를 모두 지우고, 정상적인 concurrent 본문은 그대로 표시 하나만 씁니다.
5.19.659내부셀프호스트 렉서의 보간 결과에서 쓰이지 않던 항목을 걷어냈습니다. 정상 종료와 파일 끝 균형, 줄바꿈 복구는 이미 토큰과 다음 위치가 말해 주므로 토큰과 진단, 위치는 그대로입니다.
5.19.658내부소스 안의 폼피드 문자를 셀프호스트 렉서가 공백으로 조용히 받아들이지 않고 TPZ0001 로 거부합니다. Stage 0 컴파일러와 같아졌으며 공백과 탭, 캐리지 리턴, 줄바꿈 처리는 그대로입니다.
5.19.657내부셀프호스트 파서가 범위를 벗어난 미리보기에서 따로 만든 끝 표시가 아니라 스트림의 실제 마지막 토큰을 돌려줍니다. 폴백 경로들이 서로 어긋나지 않고 끝 토큰의 종류와 위치, 진단, 복구는 그대로입니다.
5.19.656내부파서 허용 표시 두 개를 기본값을 낀 조회와 꺼냈다 넣기가 아니라 셀프호스트 컴파일러가 곧바로 읽고 씁니다. 비어 있는 잘못된 자리가 조용히 메워지는 일이 없어졌고 파싱 결과는 그대로입니다.
5.19.655내부셀프호스트 파서가 위치와 직전 범위 커서를 빈 자리일 때 호출자가 준 값을 지어내던 도우미를 거치지 않고 곧바로 읽습니다. 구문 트리와 진단, 위치, 복구는 그대로입니다.
5.19.654내부두 컴파일러가 대기 중인 > 를 일반 토큰 커서로 소비해 닫는 꺾쇠의 주인이 하나가 됐습니다. 중첩 제네릭과 쉼표로 나눈 타입 인자, >> 의 분리, 잘못된 여분 닫기 처리는 그대로입니다.
5.19.653내부타입 인자 목록을 끝낼 때 셀프호스트 파서가 대기 중인 닫는 꺾쇠 저장소를 따로 보지 않고 토큰 커서만 봅니다. 타입 인자 파싱과 구문 트리, 진단은 그대로입니다.
5.19.652내부보간이 들어간 문자열을 리터럴 타입으로 쓰면 셀프호스트 파서가 TPZ2001 로 거부합니다. Stage 0 컴파일러가 이미 내던 것과 같은 코드와 메시지, 위치를 쓰며 예전에는 그대로 통과했습니다.
5.19.651내부매개변수 이름으로 None 을 쓰면 두 컴파일러 모두 TPZ2012 로 거부합니다. 일반 함수와 프로토콜 메서드, 두 가지 람다 형태에 모두 적용되며 NoneOption 생성자라 보통 이름으로 쓸 수 없습니다.
5.19.650내부using 자원의 이름을 None 으로 묶으면 셀프호스트 파서가 TPZ2012 로 거부해 Stage 0 컴파일러와 같아집니다. 자원 값과 본문 파싱, 다른 바인딩 형태는 그대로입니다.
5.19.649내부키워드를 이름으로 쓴 네임스페이스 멤버를 참조하면 셀프호스트 컴파일러가 내보내지 않았다는 일반 오류 대신 TPZ3013 을 냅니다. 같은 소스에 두 컴파일러가 같은 진단을 내놓습니다.
5.19.648내부타입 자리에 쓰인 네임스페이스 멤버가 셀프호스트 컴파일러에서 타입 대상으로 기록되고, 비공개 레코드 기본값 예외는 값 자리에만 적용됩니다. 타입으로 참조된 비공개 바인딩이 다시 TPZ3009 를 냅니다.
5.19.647내부최상위 이름이 충돌한 모듈도 셀프호스트 컴파일러에서 선언한 내보내기를 그대로 지킵니다. 임포트한 쪽이 모듈에 내보낸 것이 없다는 잘못된 보고를 받지 않으며 충돌 자체는 그대로 보고합니다.
5.19.646내부임포트 표면 검사가 이름 충돌이 이미 보고된 뒤에도 셀프호스트 컴파일러에서 계속 돌아 관계없는 임포트 오류가 묻히지 않습니다. 두 컴파일러 모두 충돌을 먼저 내고 임포트 오류를 이어서 냅니다.
5.19.645내부이름이 이미 충돌한 자리에서도 export let mut 선언이 셀프호스트 컴파일러에서 TPZ3011 을 냅니다. 진단이 빠지지 않으며 두 컴파일러가 보고 순서까지 같아집니다.
5.19.644내부한 스코프에서 같은 이름을 두 번 선언한 뒤의 참조가 셀프호스트 컴파일러에서 첫 선언이 아니라 나중 선언을 가리킵니다. 중첩 스코프의 가림과 기록되는 선언 자체는 그대로입니다.
5.19.643내부두 컴파일러가 임포트한 모듈의 초기화 블록을 검사할 때 중첩된 using 문 안까지 봅니다. 자원 값이나 본문에서 뒤에 오는 이름을 앞질러 참조하면 그냥 넘어가지 않고 TPZ3018 을 냅니다.
5.19.642내부구조적 레코드 타입이나 레코드 리터럴에 같은 필드가 두 번 나오면 셀프호스트 검사기가 받아들이지 않고 TPZ5022 로 거부합니다. 필드 순서를 다르게 적은 레코드는 여전히 같은 기대 타입에 대입됩니다.
5.19.641내부내장 함수가 셀프호스트 검사기에서 타입과 호출 서명을 한 목록에서 함께 가져옵니다. 같은 매개변수 이름과 기본값, 개수를 두 곳이 따로 적던 상태가 사라졌고 내장 호출 동작은 그대로입니다.
5.19.640내부Stage 0 컴파일러의 모듈 단위 검사가 타입 결과를 남기든 남기지 않든 한 경로로 돕니다. 의존 순서와 진입점 검사, 내보내기, 별칭, 프로토콜 준수는 그대로입니다.
5.19.639내부구조적 레코드가 셀프호스트 검사기에서 표준 필드 순서를 한 곳에서 정합니다. 순서를 거꾸로 적은 레코드도 같은 바인딩 타입을 얻고, 정확한 레코드 타입이 기대되는 자리에서는 알려진 필드가 리터럴 타입을 지킵니다.
5.19.638내부타입 인자 치환이 호출마다 두 벌의 나란한 목록을 다시 만들지 않고 셀프호스트 검사기에서 바인딩을 곧바로 읽습니다. 배열 정렬은 원소 타입을 한 번만 구해 능력 판정과 진단 문구에 함께 씁니다.
5.19.637내부내보낸 제네릭 타입 별칭이 enum 과 레코드 타입, newtype 에도 타입 인자를 채워 넣습니다. 네임스페이스로 한정한 별칭을 거쳐 닿는 필드와 변형 패턴, 메서드가 실패하지 않고 풀리며 지역 별칭은 이전과 같습니다.
5.19.636내부셀프호스트 검사기에서 명시한 타입 인자와 기대 결과 타입은 리터럴 타입을 지키고 일반 인자는 예전처럼 넓힙니다. 리터럴 타입 인자를 담은 제네릭을 돌려주는 문맥 호출이 거부되지 않고 통과합니다.
5.19.635내부타입 순회를 셀프호스트 검사기에서 타입에 묻는 판단 하나와 부분을 바꿔 쓰는 변환 하나가 나눠 맡습니다. 같은 자식들을 각자 훑던 일곱 갈래가 정리됐고 판단마다의 규칙은 그대로 남았습니다.
5.19.634내부Stage 0 컴파일러가 타입의 부분을 한 곳에 모은 목록을 따라 훑습니다. 미지 타입 탐지와 변수 수집, 투영 탐지, 이름 있는 타입의 인자 검사에 흩어져 있던 같은 자식 목록이 정리됐고 판단마다의 규칙은 그대로입니다.
5.19.633내부능력 검사 다섯 가지가 셀프호스트 검사기에서 이름 있는 타입의 자식을 뽑아내는 한 가지 방식을 함께 씁니다. 레코드와 enum, newtype 조회, 제네릭 치환을 한 번만 적으며 어떤 타입이 비교와 정렬, 키, JSON 에 쓰일 수 있는지는 그대로입니다.
5.19.632내부Stage 0 컴파일러의 JSON 인코딩과 디코딩 능력 검사가 한 순회를 함께 쓰면서 실제 차이 두 가지는 그대로 둡니다. 내장 타입 하나는 인코딩만 되고, 재귀적인 이름 있는 타입은 유한한 스키마가 필요한 디코딩에서 거부됩니다.
5.19.631내부Stage 0 컴파일러의 프로토콜 호출이 수신자를 한 번만 추론해 그 타입을 디스패치 검사에 다시 씁니다. 수신자 식을 두 번 훑던 일이 없어졌고 준수 허용과 거부, 진단은 그대로입니다.
5.19.630내부Stage 0 컴파일러의 JSON.stringify 인코딩 가능 검사가 이미 구한 인자 타입을 다시 쓰고, 그 타입이 아직 정해지지 않았을 때만 추가 조사를 합니다. 어떤 값이 인코딩되는지는 그대로입니다.
5.19.629내부Stage 0 컴파일러에서 함수 본문과 수신자 메서드 본문이 반환 문맥과 반복문 격리, 생략된 반환 수집을 한 흐름으로 함께 씁니다. 자유 함수는 여전히 추론한 서명을 공개하고 메서드는 메서드 목록을 갱신합니다.
5.19.628내부Stage 0 컴파일러의 한 어휘 스코프가 바인딩 타입과 변경 가능한 이름, 대기 중인 반환, 별칭 연결, 호출 정보를 다섯 개의 나란한 목록이 아니라 한 프레임에 담습니다. 가림과 변경 가능성, 재귀 진단은 그대로입니다.
5.19.627내부Stage 0 컴파일러가 수신자 메서드와 직접 작성한 프로토콜 메서드, 준수 관계를 겹쳐 놓은 목록으로 조회하고, 셀프호스트 검사기는 목록을 훑는 대신 색인으로 준수 여부를 답합니다. 출력 순서는 그대로입니다.
5.19.626내부편집기의 자동 완성과 서명 도움말이 내장 이름보다 소스에 실제로 있는 바인딩을 먼저 찾습니다. Map 이라는 이름의 배열은 배열 멤버를 보여 주고, 직접 만든 print 함수는 내장 서명이 아니라 자기 서명을 보여 줍니다.
5.19.625내부편집기 자동 완성이 검사기가 실제로 받아들이는 내장 이름을 모두 보여 줍니다. ByteBuffertemplate 같은 타입, MathJSON, Test 같은 정적 네임스페이스, Show 같은 프로토콜, RoundingMode 값이 함께 나옵니다.
5.19.624내부타입 이름을 붙인 레코드 패턴이 Stage 0 이름 해석 단계에서 필드 바인딩을 제대로 등록합니다. 임포트한 모듈의 초기화 블록에 있는 정상 소스가 TPZ3018 을 잘못 받지 않고, 그 패턴 안의 타입 붙은 하위 패턴도 선언을 가리킵니다.
5.19.623내부Stage 0 컴파일러의 최상위 초기화 검사가 타입 이름을 붙인 레코드 패턴이 묶는 이름까지 모읍니다. 블록 안의 바인딩이 뒤에 오는 최상위 이름을 제대로 가리므로 TPZ5002 를 잘못 받지 않습니다.
5.19.622내부셀프호스트 검사기 소스가 봉인된 Stage 2 컴파일러를 진단 없이 통과합니다. return 으로 끝나는 match 갈래 때문에 넓어지던 값을 구체적으로 유지하고, 배열은 길이를 확인한 뒤 다루며 값이 정해진 뒤에만 타입이 붙은 도우미로 넘어갑니다.
5.19.621내부깊게 재귀하는 프로그램이 호스트 스택을 소진하지 않고 언어의 재귀 한계에 닿아 호출 자리에서 TPZ5009 를 보고합니다. 64 MiB 실행 스택 하나를 대상 제품과 내장 컴파일러 이미지가 함께 씁니다.
5.19.620내부최상위 바인딩 색인을 참조마다 모든 최상위 문을 다시 훑는 대신 셀프호스트 검사기가 모듈당 한 번만 만듭니다. 초기화 순서 규칙과 TPZ5002 진단은 그대로입니다.
5.19.619내부두 컴파일러가 이름 있는 모든 타입에 정확한 개수의 타입 인자를 요구합니다. intstring 부터 Array, Map, Option, 직접 만든 레코드와 enum, newtype 까지 해당하며 Fileopen 이 돌려주는 자원을 가리키고 단위 타입의 표기는 () 하나뿐입니다.
5.19.618내부값이나 반환 타입에 template 을 적는 표기가 두 컴파일러에서 제대로 동작합니다. 이름만 같은 두 타입이 어긋난다는 오류가 사라졌고, template 이라는 이름으로 레코드나 enum, newtype 을 선언하면 TPZ5022 로 거부합니다.
5.19.617내부보간이 들어간 문자열을 함수 매개변수 기본값으로 쓰면 셀프호스트 검사기가 거부합니다. 예전에는 받아들였고, 글자만으로 이뤄진 문자열만 상수 식으로 인정해 Stage 0 컴파일러와 같아집니다.
5.19.616내부ByteBuffer 를 보간하거나 레코드와 유니온, enum 페이로드, newtype 안에 그것을 품은 값을 보간하면 셀프호스트 검사기가 TPZ5001 로 거부합니다. 일반 문자열과 태그 템플릿 모두 해당하며 예전에는 그냥 지나갔습니다.
5.19.615내부수신자가 프로토콜을 따르지 않아 호출이 거부될 때도 셀프호스트 검사기가 나머지 인자를 계속 검사합니다. 잘못된 인자 타입이 준수 오류 뒤에 가려지지 않고 함께 보고됩니다.
5.19.614내부TPZ5004 의 인자 개수가 호출 자리에서 실제로 건넨 인자 수를 알려 줍니다. 파이프로 넘긴 값과 넘치는 인자까지 세므로 매개변수 하나짜리 함수에 인자를 둘 주면 하나가 아니라 둘로 보고합니다.
5.19.613내부맵 리터럴에 같은 소수나 단위 값을 키로 두어도 셀프호스트 검사기가 검사 단계에서 TPZ5602 로 거부하지 않습니다. 정적 중복 판정은 정수와 불, 보간 없는 문자열 키에만 적용되고 실행 중에 발견된 중복 키는 여전히 TPZ4601 오류입니다.
5.19.612내부기대하는 매개변수 개수와 다른 람다를 넘기면 셀프호스트 검사기가 타입 불일치보다 먼저 TPZ5004 를 냅니다. Stage 0 컴파일러와 같아졌고 추론을 이어 가므로 뒤따르는 오류도 그대로 보고됩니다.
5.19.611내부이름을 바꿔 가져온 newtype 생성자 패턴이 그 가져오기가 실제로 고른 타입과 맞물립니다. 다른 모듈에 같은 이름의 타입이 있어도 두 컴파일러가 똑같이 받아들입니다.
5.19.610내부선택 가져오기로 쓴 레코드 패턴이 실제로 가져온 레코드로 풀립니다. match 완전성 검사도 서로 다른 모듈의 같은 이름 레코드를 하나로 묶지 않고 구분합니다.
5.19.609내부가져온 타입의 파생 프로토콜 준수가 별칭이나 네임스페이스로 한정한 이름을 따라갑니다. 올바른 가져온 타입이 더는 거부되지 않고, 서로 다른 모듈의 같은 이름 타입 사이로 준수가 새지 않습니다. 표시되는 타입 이름은 그대로입니다.
5.19.608내부가져온 타입을 시그니처에 쓴 프로토콜이 그 타입을 제대로 알아봅니다. 형태가 맞는 구현이 불일치로 거부되지 않고 통과합니다.
5.19.607내부공개 값이나 별칭을 통해 닿을 수 있는 비공개 타입이 자신을 선언한 모듈의 정체성을 지닙니다. 한 모듈의 레코드를 다른 모듈의 같은 이름 레코드 자리에 넘기면 TPZ5001 로 거부합니다. 토파즈 5.19 동작은 그대로입니다.
5.19.606내부리스펙스 응용이 셀프호스트 경로에서 평가가 끝나지 않은 채 멈추지 않고 제대로 완료됩니다. 리스펙스 호스트가 돌려준 값을 검사기가 승인한 타입 정체성에 맞춰 받기 때문입니다.
5.19.605내부컴파일러를 고를 수 있는 모든 명령이 아무것도 지정하지 않으면 Rust 를 쓰고 --compiler self 를 적어야만 셀프호스트로 컴파일한다는 규칙에 맞춰 내부 검사를 바로잡았습니다. 제품 동작은 그대로입니다.
5.19.604내부명시한 절대 소스 루트 아래의 절대 진입 파일이 지정한 루트를 그대로 유지해서 모듈을 디렉터리가 겹친 경로가 아니라 실제 경로에서 찾습니다. --exports-json 은 내보내는 것이 없는 모듈까지 해석된 모든 모듈을 싣습니다.
5.19.603내부진입 파일 자체를 --root 로 넘기면 TPZ3002 로 거부하고 소스 루트는 진입 파일이 아니라 그것을 담은 디렉터리여야 한다고 알립니다. 예전에는 두 컴파일러가 이를 받아들이고 서로 다른 잘못된 모듈 이름을 만들었습니다.
5.19.602내부가져오기를 해석하는 동안 모듈마다 소스 전체를 복사하던 일이 사라져 모듈당 할당이 하나씩 줄었습니다. 파싱과 모듈 이름, 진단, 이후 모든 단계는 그대로입니다.
5.19.601내부두 모듈이 같은 없는 모듈을 가져올 때 셀프호스트 컴파일러가 TPZ3001 을 가져오는 쪽마다 하나씩이 아니라 한 번만 알립니다. Rust 컴파일러와 같은 결과입니다.
5.19.600내부구문 분석에 실패한 문장이 가져오기 구역을 닫지 않아서 뒤따르는 import 를 늦은 가져오기로 잘못 알리지 않습니다. 두 컴파일러가 진짜 문법 오류 하나만 알립니다.
5.19.599내부셀프호스트 컴파일러의 중괄호 누락 오류가 산문 설명 대신 {} 토큰을 그대로 가리킵니다. 레코드와 열거형, 프로토콜, 함수 블록, 패턴, match 식에서 두 컴파일러의 문구가 같아집니다.
5.19.598내부>> 로 제네릭 목록을 닫은 뒤 남은 > 가 셀프호스트 파서에 그대로 보입니다. 타입 별칭과 제네릭 함수, 프로토콜 구현에서 꺾쇠가 하나 더 붙으면 두 컴파일러가 같은 자리에서 같은 토큰을 기대합니다.
5.19.597내부.. 뒤에 끝점이 없는 범위에 셀프호스트 컴파일러도 .. 자리를 가리키며 끝점을 요구하는 메시지 하나만 냅니다. 파일 끝, 괄호 안, 배열 안, 간격을 붙인 경우, match 가드에서 뒤따르던 두 번째 오류가 사라집니다.
5.19.596내부map 컴프리헨션이 키와 값 구분자 없이 끝나면 두 컴파일러가 같은 메시지를 냅니다. 빠진 토큰을 이름으로 가리키고 본문이 어떤 모양이어야 하는지 보여 주는 쪽입니다.
5.19.595내부match 가드나 컴프리헨션 절의 화살표 바로 앞에 놓인 괄호 식을 더는 람다로 잘못 읽지 않습니다. 셀프호스트 컴파일러에서도 Rust 컴파일러와 똑같이 검사되고 실행됩니다. 괄호로 묶은 람다는 그대로 동작합니다.
5.19.594내부matchconcurrent 안의 잘못된 항목을 한 번만 알리고 다음 케이스나 갈래로 이어서 읽습니다. 식 전체를 되감으며 있지도 않은 오류를 덧붙이지 않습니다.
5.19.593내부비어 있는 match 를 셀프호스트 컴파일러도 case 가 최소 하나는 있어야 한다는 같은 메시지로 같은 중괄호 구간에 알립니다. 예전에는 아무 진단 없이 지나갔습니다.
5.19.592내부셀프호스트 컴파일러에서도 match 의 케이스와 concurrent 의 갈래 사이에 구분자가 필요합니다. 빠지면 다음 케이스나 갈래가 시작하는 자리에서 알립니다. 올바른 구분자와 닫는 중괄호, 파일 끝은 그대로 받아들입니다.
5.19.591내부블록 안에서 구분자 없이 이어진 두 문장에 두 컴파일러 모두 두 번째 문장 자리에 메시지 하나만 냅니다. 그 뒤 닫는 중괄호에서 오류가 두 개 더 붙지 않습니다.
5.19.590내부프로그램 최상위에 닫는 중괄호가 남으면 두 컴파일러가 같은 메시지 두 개를 냅니다. 셀프호스트 파서도 Rust 컴파일러처럼 그 중괄호를 다음 항목에 넘기기 때문입니다.
5.19.589내부export enumexport recordexport newtype 선언을 잘못 쓴 경우에 컴파일러가 더는 멈춰 서지 않습니다. 키워드 자리에서 평소의 구분자 메시지로 알리고, 올바른 내보내기 선언은 그대로입니다.
5.19.588내부셀프호스트 컴파일러에서 exportimpl 블록 전체를 선언으로 받지 않습니다. 오류가 구문 분석 단계에서 impl 자리를 가리킵니다. impl 안의 개별 메서드를 내보내는 방식은 그대로 됩니다.
5.19.587내부매개변수 self 를 수신자로 보는 경우는 맨 앞에 오고 가변 인자가 아닐 때뿐입니다. 다른 매개변수 뒤에 쓰거나 스프레드으로 쓰면 셀프호스트 컴파일러도 Rust 컴파일러처럼 거부합니다.
5.19.586내부mutlet 앞이나 이름 뒤처럼 엉뚱한 자리에 쓰면 셀프호스트 컴파일러가 두루뭉술한 식이나 등호 오류 대신 let mut 안내를 보여 줍니다.
5.19.585내부impl 이나 protocol 본문에 함수가 아닌 항목이 오면 그 본문에는 메서드만 또는 시그니처만 올 수 있다는 전용 메시지로 알립니다. Rust 컴파일러와 같은 문구입니다.
5.19.584내부enum, record, newtype, impl, protocol 은 정확한 선언 형태가 뒤따를 때만 선언으로 읽힙니다. 셀프호스트 컴파일러도 같은 규칙을 적용해서 이 낱말들을 평범한 이름으로 계속 쓸 수 있고, 잘못된 쓰임은 Rust 컴파일러와 같은 자리에서 알립니다.
5.19.583내부열거형 배리언트에 빈 페이로드 괄호를 쓰면 셀프호스트 컴파일러가 첫 타입을 요구하며 거부합니다. 페이로드가 없는 배리언트는 예전처럼 괄호를 생략하고, 실패한 선언 뒤 복구도 Rust 컴파일러와 같은 순서로 알립니다.
5.19.582내부타입이나 함수 선언에 빈 <> 목록을 쓰면 셀프호스트 컴파일러가 닫는 꺾쇠 자리에서 타입 매개변수를 요구하며 거부합니다. 타입 매개변수가 아예 없는 선언은 영향을 받지 않습니다.
5.19.581내부선택 가져오기에서 지역 이름이 겹칠 때 나오는 진단이 Rust 컴파일러와 같은 순서로 나옵니다. 나중 쪽이 아니라 각 짝에서 앞선 이름의 위치를 따릅니다.
5.19.580내부concurrenttimeout 절을 잘못 쓰면 메시지 하나를 내고 짝이 맞는 괄호까지 복구합니다. 뒤따르던 연쇄 오류가 사라졌고, 올바른 지속 시간 값은 예전대로 읽힙니다.
5.19.579내부topaz check --compiler self 가 설치된 셀프호스트 컴파일러에서 다시 진짜 파서 진단을 돌려줍니다. 전에는 거부된 프로그램이 실제 TPZ2001 메시지 대신 내부 불일치 오류로 나타났습니다.
5.19.578내부레코드 갱신은 맨 앞 스프레드 뒤에 쉼표나 닫는 중괄호를 요구하고, 두 번째 이후의 스프레드은 정확한 메시지 하나로 거부하며 짝이 맞는 중괄호에서 복구합니다. 보통 레코드 리터럴과 올바른 앞머리 스프레드은 그대로입니다.
5.19.577내부진단에 딸린 참고 문구가 셀프호스트 경로 전체를 통과합니다. 명시한 타입 인자를 빼라는 안내가 사라지지 않고 편집기와 diagnostics.jsonl 까지 도착합니다.
5.19.576내부토파즈에서 괄호는 식 하나만 묶습니다. 괄호 안에 쉼표를 쓰면 셀프호스트 컴파일러가 쉼표 자리에 메시지 하나를 내고 짝이 맞는 괄호까지 복구하며, 두 번째 오류를 덧붙이지 않습니다.
5.19.575내부f<x+y>() 같은 식을 셀프호스트 컴파일러가 제네릭 호출이 아니라 비교로 다시 읽습니다. 검사기까지 도달해 Rust 컴파일러와 똑같이 순서 비교 오류 TPZ5007 을 알립니다.
5.19.574내부명시한 타입 인자는 식별자와 멤버, 옵션 접근 뒤에서만 인식합니다. (identity)<int>(1) 을 셀프호스트 컴파일러가 더는 제네릭 호출로 보지 않고 Rust 컴파일러와 같은 TPZ5002 를 냅니다.
5.19.573내부JSON.parseAsJSON.decode 를 명시한 타입 인자 개수를 틀리게 호출하면 개수 오류인 TPZ5510 하나만 알리고 뒤따르던 타입 불일치는 나오지 않습니다. 올바른 호출은 그대로입니다.
5.19.572내부명시한 타입 인자는 개수가 호출 대상과 정확히 맞을 때만 씁니다. 개수가 틀린 호출은 개수 메시지 하나만 내고, 나머지는 평소 추론을 이어가서 엉뚱한 불일치가 붙지 않습니다.
5.19.571내부제네릭 함수 본문 안의 이름에 붙인 타입이 그 함수의 타입 매개변수에 제대로 묶입니다. SomeOk, map, reduce 같은 표준 제네릭 생성자와 수신자 메서드에도 명시한 타입 인자를 쓸 수 있습니다. 옵션 접근 호출은 여전히 거부합니다.
5.19.570내부타입을 붙인 패턴이 타깃 백엔드에서 검사기가 부여한 뜻 그대로 실행됩니다. 기본형과 리터럴, 유니온, 구조적 레코드, Option, Result, Array, Set, Map, 범위, 호출 인자 수, 제네릭 레코드와 열거형과 newtype 을 다룹니다.
5.19.569내부프로젝트 자체 빌드 자동화를 공개 GitHub 액션의 현재 메이저 버전과 명시적인 Node 24 런타임으로 옮겼습니다. 제품 코드와 공개된 릴리스, 아티팩트는 하나도 바뀌지 않았습니다.
5.19.568내부타깃 백엔드가 나머지 구간이 있는 리스트 패턴과 구조적 레코드 패턴, 이름 있는 레코드 패턴, newtype 생성자를 맞춰 보고 레코드와 열거형 타입이 정확히 같은지 확인합니다. 이름 있는 레코드 패턴이 묶은 이름도 초기화된 것으로 셉니다.
5.19.567내부타깃 백엔드에서 반복 제어가 제대로 동작합니다. 문장으로 쓴 forbreakcontinue 를 받고, loopbreak 가 실어 보낸 값을 돌려주며, 라벨을 붙인 제어가 값을 만드는 for 를 건너뜁니다. whileforloop 는 반복마다 새 스코프를 씁니다.
5.19.566내부using File 이 타깃 백엔드에서 실행됩니다. 블록이 정상으로 끝나거나 반환, ? 전파, break, continue 로 빠져나갈 때 핸들이 자동으로 닫히고, 도달한 defer 가 그 닫힘 전에 역순으로 실행됩니다.
5.19.565내부concurrent 갈래가 타깃 백엔드에서 실제로 번갈아 실행됩니다. 하나를 끝까지 돌리지 않고 서로 양보하며, timeout 절이 만료되면 남은 갈래를 버리고 else 를 평가하고, 갈래 안의 오류는 앞선 무한 갈래를 지나서도 드러납니다.
5.19.564내부타깃 백엔드가 null 과 정수 범위, 집합 리터럴, 배열과 집합과 맵 컴프리헨션을 평가합니다. 배열 스프레드을 소스 순서대로 풀고, 값을 만드는 for 는 본문 값을 반복 순서대로 돌려줍니다.
5.19.563내부함수와 람다가 타깃 백엔드에서 붙잡은 스코프와 함께 값으로 오갑니다. 내장 메서드와 이름이 같은 레코드 필드가 그 메서드보다 먼저 불리고, ArrayOption, Result, Map 의 고차 콜백이 실행되며, 값으로 넘긴 print 도 호스트까지 닿습니다.
5.19.562내부타깃 백엔드에서 호출이 적힌 순서대로 평가됩니다. 호출 대상이나 수신자를 인자보다 먼저 한 번만 평가하고, 파이프라인은 앞선 값을 먼저 평가하며, None 이나 null 에 대한 옵션 호출은 인자를 하나도 평가하지 않고 돌아오고, 스프레드은 제자리에서 풀립니다.
5.19.561내부타깃 백엔드의 사용자 함수 호출이 적힌 대로 인자를 묶습니다. 이름을 붙인 인자가 선언된 자리에 들어가고, 생략한 매개변수는 기본값을 받으며, 명시한 스프레드과 그 뒤 위치 인자가 가변 인자 배열이 됩니다.
5.19.560내부직접 만든 레코드와 열거형과 newtypeimpl 블록으로 쓴 메서드를 셀프호스트 컴파일러가 검사하고 타깃 백엔드가 호출합니다. 직접 쓴 프로토콜 구현이 파생된 ShowEqOrder 보다 앞섭니다.
5.19.559내부셀프호스트 컴파일러가 직접 쓴 impl Protocol<Type> 선언을 검사합니다. 완전하고 정확한 구현만 등록하고, 대상이 틀리거나 중복이거나 메서드가 빠지거나 시그니처가 어긋날 때 쓰던 진단을 그대로 냅니다.
5.19.558내부P.m(...) 같은 프로토콜 정적 호출을 셀프호스트 컴파일러가 검사합니다. 준수하는 수신자는 구체적인 매개변수와 결과 타입을 받고, 준수하지 않으면 TPZ5522 를 알리며, 이름을 붙인 인자나 스프레드 인자는 여전히 거부합니다.
5.19.557내부사용자 프로토콜 선언을 셀프호스트 컴파일러가 검사합니다. 내장 이름 재선언과 이름 충돌, 중복, 제네릭 메서드, 수신자 누락이나 오류, 반환 타입 누락, 가변 인자, 기본값, 중첩 선언을 거부합니다.
5.19.556내부올바른 프로토콜 선언이 셀프호스트 빌드를 지원하지 않는 문법이 있는 것으로 표시하지 않습니다. 프로토콜 시그니처는 컴파일 시점 정보라 실행 연산을 만들지 않고, 프로토콜 밖의 진짜 미지원 문법은 그대로 알립니다.
5.19.555내부프로토콜 메서드 매개변수에 기본값을 쓰면 셀프호스트 컴파일러가 기본값 식 안의 엉뚱한 이름 오류 대신 프로토콜 규칙을 TPZ5022 로 알립니다.
5.19.554내부FS.list 가 이름이 올바른 Unicode 가 아닌 디렉터리 항목을 다른 항목과 겹칠 수 있는 대체 문자 문자열로 바꾸지 않습니다. 그런 디렉터리는 평소의 Result 통로로 오류를 돌려줍니다.
5.19.553내부실제 디렉터리 이름이 올바른 Unicode 가 아닌 패키지 루트를 Unicode 심볼릭 링크로 가리켜도 FS.readTextFS.open 이 파일을 제대로 찾습니다. 권한과 경계 검사, 심볼릭 링크 탈출 거부는 그대로입니다.
5.19.552내부topaz build --target python 이 옛 버전이 남긴 캐시를 정리하면서 이름이 올바른 Unicode 가 아닌 사용자 파일을 지우지 않습니다. 생성된 캐시 이름과 정확히 일치하는 항목만 지웁니다.
5.19.551내부개발 서버가 수정 시각이 1970년보다 이른 입력과 이름이 올바른 Unicode 가 아닌 디렉터리 아래 파일까지 지켜봅니다. 같은 시각을 유지한 채 원자적으로 교체해도 다시 빌드합니다.
5.19.550내부실제 이름이 올바른 Unicode 가 아닌 디렉터리를 Unicode 심볼릭 링크로 가리켜 패키지를 열어도 개발 웹 서버가 404 를 돌려주지 않습니다. 빌드와 서버가 같은 출력 디렉터리를 씁니다.
5.19.549내부TOPAZ_STORAGE_DIR 로 지정한 빌드 저장 디렉터리 이름이 올바른 Unicode 가 아니면 조용히 대체 문자 경로로 갈라놓지 않고, 그 경로를 Unicode 로 나타낼 수 없다는 메시지로 미리 거부합니다.
5.19.548내부topaz compiler validate 가 읽는 번들은 모든 구성원 경로가 정확한 Unicode 여야 합니다. 서로 다른 두 파일이 한 이름으로 뭉개지지 않고, 나타낼 수 없는 경로는 오류로 알립니다.
5.19.547내부이름이 올바른 Unicode 가 아닌 소스 파일이 든 패키지는 해시 계산과 벤더링 전에 거부합니다. topaz vendor 가 이미 벤더링한 패키지를 덮어쓴 뒤에 실패하는 일이 없어졌습니다. 보통 패키지 소스는 그대로입니다.
5.19.546내부web.stylesweb.assets 에 선언한 자산과 스타일시트는 정확한 Unicode 경로여야 합니다. 선언한 자산이 조용히 빠지거나 원본을 되짚을 수 없는 경로로 나가는 일이 없어졌습니다.
5.19.545내부topaz test 가 이름이 올바른 Unicode 가 아닌 디렉터리를 가리키는 Unicode 심볼릭 링크 테스트 파일을 제대로 찾고, 실제로 지정한 경로 그대로 결과를 표시합니다. 패키지 밖 경로와 .tpz 가 아닌 경로는 여전히 거부합니다.
5.19.544내부실제 이름이 올바른 Unicode 가 아닌 디렉터리를 심볼릭 링크로 가리키는 작업 공간에서도 저장하지 않은 편집기 버퍼가 제 모듈에 그대로 붙어 있습니다. 가져온 모듈이 디스크 파일이 아니라 열린 문서를 다시 읽습니다.
5.19.543내부Linux 에서 이름에 올바르지 않은 UTF-8 바이트가 들어간 서로 다른 디렉터리의 모듈을 심볼릭 링크로 불러와도 컴파일러가 둘을 구분합니다. 두 모듈을 같은 파일로 잘못 보고 충돌로 거부하는 일이 없어졌습니다.
5.19.542내부Linux 에서 같은 디렉터리에 이름이 올바른 UTF-8 이 아닌 파일이 함께 있어도 모듈 가져오기가 그대로 해석됩니다. 디렉터리 나열은 Unicode 문자로 나타낼 수 없는 항목만 건너뛰며, 디렉터리 전체를 읽지 못한 것으로 다루지 않습니다.
5.19.541내부링크나 별칭을 거쳐 같은 파일을 두 번 가져오면 두 모듈로 올라오지 않고 TPZ3004 모듈 충돌로 보고합니다. 실제로 서로 다른 파일을 가져오는 경우와 루트 포함 검사, 나머지 진단은 영향을 받지 않습니다.
5.19.540내부이름 검사가 참조를 기록하기 전에 타입 트리를 한 번 더 훑던 빈 순회를 없앴습니다. 진단과 스코프 정보, 컴파일러 출력은 모두 같으며 중복 작업만 줄었습니다.
5.19.539내부컴파일러 파일 접근 계층에서 아무도 쓰지 않던 파일 존재 확인 의무와 그 열 개 구현을 걷어냈습니다. 파일 읽기와 디렉터리 나열, 패키지 조회, 편집기 오버레이, 진단은 이전과 똑같이 동작합니다.
5.19.538내부22개 표준 모듈을 하나의 목록에서 관리합니다. 모듈 해석과 편집기 자동 완성이 어떤 모듈이 있는지를 두고 어긋날 수 없으며 완성 항목과 모듈 경로, 모듈 소스는 그대로입니다.
5.19.537내부a.tpz.tpz 처럼 소스 확장자가 겹친 진입 파일이 두 컴파일러에서 같은 모듈 이름을 갖습니다. 마지막 확장자 하나만 떼어 내므로 진단에 나오는 가져오기 사슬 이름도 실제 파일과 맞습니다.
5.19.536내부초기화 검사가 이름을 소스 텍스트에서 곧바로 읽고, 이름을 보관해야 하거나 실제 위반을 보고할 때만 복사본을 만듭니다. TPZ3018 문구와 위치를 비롯한 나머지 결과는 그대로입니다.
5.19.535내부최상위 letconst 선언이 조용히 건너뛰던 분기 대신, 다른 모든 선언과 같은 명시적 경로로 스코프 정보를 기록합니다. 가림과 스코프 번호, 진단은 그대로입니다.
5.19.534내부모듈 해석에서 실패할 수 없는 조회에 조용히 대체값을 넣던 세 곳이 표를 직접 참조합니다. 내부 불일치가 잘못된 의존 순서나 누락된 내보내기로 바뀌지 않고 드러나며 평소 결과는 그대로입니다.
5.19.533내부가져오기 그래프 탐색과 의존 순서, 순환 보고가 필요할 수 없는 대체값을 넣지 않고 배열을 직접 읽습니다. 셀프호스트 컴파일러의 그래프 모양과 순환 메시지, 순서는 그대로입니다.
5.19.532내부가져오기 구문 분석에서 쓰이지 않던 두 필드를 걷어냈고, 선택 가져오기 진단이 도달할 수 없는 대체 위치를 두지 않고 정확한 위치를 직접 읽습니다. 별칭 연결과 제안, 메시지는 그대로입니다.
5.19.531내부지역 스코프 처리가 일어날 수 없는 조회 실패를 조용히 넘기지 않고 활성 스코프를 직접 읽고 갱신합니다. 셀프호스트 컴파일러의 어휘 조회와 가림, 스코프 번호, 진단은 그대로입니다.
5.19.530내부모듈 표 조회가 카탈로그를 직접 참조하며, 절대 일어날 수 없던 모듈 표 누락 오류를 없앴습니다. 셀프호스트 컴파일러의 가져오기 해석과 네임스페이스, 진단은 그대로입니다.
5.19.529내부모듈 표의 열두 곳이 미해결 참조나 누락된 진단 같은 잘못된 답으로 물러서지 않고 바인딩을 직접 참조합니다. 셀프호스트 컴파일러의 가져오기 해석과 네임스페이스, 진단은 모두 그대로입니다.
5.19.528내부정렬 루프 두 곳이 배열을 직접 읽습니다. 셀프호스트 컴파일러의 내부 경계 문제가 조용히 다른 순서의 결과로 나오지 않고 오류로 드러나며 질의 순서와 내보내기 순서, 제안은 그대로입니다.
5.19.527내부프로파일 검사의 진단 정렬과 자식 선택, 멤버 해석이 배열을 직접 읽습니다. 내부 색인이 망가졌을 때 누락된 자식이나 미해결 이름으로 나타나지 않고 오류로 드러나며 프로파일 정책과 진단은 그대로입니다.
5.19.526내부Unicode 정규화와 대소문자 접기가 글자마다 문자열 전체를 다시 만들지 않고 결과를 한 번에 모읍니다. 셀프호스트 컴파일러에서 긴 이름 처리가 훨씬 빨라지며 결과 텍스트와 충돌 보고는 그대로입니다.
5.19.525내부오타 제안이 지나치게 긴 이름을 글자로 쪼개기 전에 바이트 길이로 먼저 걸러냅니다. 셀프호스트 컴파일러가 아주 긴 이름을 끝까지 펼쳤다가 버리는 일이 없어졌고 제안 결과와 문구는 그대로입니다.
5.19.524내부오타 제안의 순위를 매기는 편집 거리 계산이 범위 밖 읽기에 빈 글자나 지어낸 거리를 넣지 않고 배열을 직접 참조합니다. 셀프호스트 컴파일러의 제안과 동점 처리, 문구는 그대로입니다.
5.19.523내부오타 제안이 이름에서 최대 65글자만 모으고, 비교 대상을 후보마다 다시 만들지 않고 질의마다 한 번만 만듭니다. Rust 컴파일러가 수 킬로바이트짜리 이름을 끝까지 훑는 일이 없어졌으며 제안 결과는 그대로입니다.
5.19.522내부오타 제안이 거리 계산을 위해 글자 배열을 다시 만들지 않고 이미 만든 배열을 재사용합니다. 셀프호스트 컴파일러는 후보마다 한 번씩만 펼치며 제안 결과는 그대로입니다.
5.19.521내부셀프호스트 컴파일러가 오타 제안 순위를 매길 때 더 나은 후보를 찾을 때마다 거리를 다시 계산하지 않고 후보마다 한 번만 계산합니다. 순위와 동점 처리, 제안 문구는 그대로입니다.
5.19.520내부오타 순위 계산이 글자마다 새 행을 만들지 않고 행 버퍼 세 개를 재사용합니다. 셀프호스트 컴파일러의 메모리 사용량은 후보 이름 길이에 비례하며 모든 제안은 그대로입니다.
5.19.519내부오타 후보마다 거리 행렬 전체를 만들지 않고 행 세 개만 유지합니다. Rust 컴파일러의 메모리 사용량이 두 이름 길이의 곱에서 후보 길이만큼으로 줄고 모든 제안은 그대로입니다.
5.19.518내부오타와 편집 거리가 같은 이름이 둘일 때 두 컴파일러 모두 사전순으로 앞선 이름을 제안합니다. 내부 순서에 따라 달라지지 않고 같은 오타에는 실행할 때마다 같은 제안이 나옵니다.
5.19.517내부직접 호출에서 이름을 틀리면 실제로 호출할 수 있는 이름만 제안합니다. 셀프호스트 컴파일러가 호출할 수 없는 지역 값이나 같은 이름의 지역 값에 가려진 내장 함수를 더는 제안하지 않습니다.
5.19.516내부셀프호스트 컴파일러가 알 수 없는 이름을 제안할 때 프로그램의 모든 선언을 훑지 않고 그 이름을 쓴 모듈의 선언만 살핍니다. 후보 순서와 순위, TPZ5002 메시지는 그대로입니다.
5.19.515내부셀프호스트 검사기가 표현식마다 기록된 호출 목록 전체를 여러 번 훑지 않고 정확한 위치로 호출을 찾습니다. 호출 순서와 Map 생성자 처리, 결과 타입, 진단은 그대로입니다.
5.19.514내부직전 버전에 들어간 잘못된 루프 탈출 때문에 Rust 컴파일러가 셀프호스트 검사기 소스를 거부했습니다. 이를 제거해 빌드를 되살렸고 리스펙스 규칙 진단의 코드와 문구, 위치는 그대로입니다.
5.19.513내부리스펙스 규칙 핸들의 간접 사용을 검사할 때 규칙 참조마다 프로그램의 모든 호출을 다시 훑지 않습니다. TPZ5500 코드와 문구, 위치는 그대로이며 규칙을 쓰는 큰 프로그램의 검사가 빨라집니다.
5.19.512내부클로저 캡처 분석이 참조마다 스코프 사슬을 다시 걷지 않고 선언 스코프의 조상을 한 번만 구합니다. 셀프호스트 컴파일러에서 캡처된 이름과 순서를 비롯한 이후 결과는 그대로입니다.
5.19.511내부Rust 컴파일러가 클로저 캡처를 모을 때 참조마다 스코프 사슬을 다시 걷지 않고 선언 스코프의 조상을 한 번만 구합니다. 캡처된 이름과 위치, Stage 1 출력은 그대로입니다.
5.19.510내부캡처 출력이 모듈마다 전체 캡처 목록을 다시 훑지 않고 한 번에 모듈별로 묶습니다. Rust 컴파일러의 캡처 순서와 위치, Stage 1 출력은 그대로입니다.
5.19.509내부Rust 컴파일러가 호출 대상 이름을 런타임 접두사 세 개와 대조하려고 복사하지 않고, 실제로 런타임 항목을 갖는 호출에서만 복사본을 남깁니다. 호출 계획과 Stage 1 출력은 그대로입니다.
5.19.508내부Rust 컴파일러에서 Stage 1 을 만드는 두 경로가 하나의 연산 정렬을 함께 씁니다. 비교할 때마다 양쪽에서 모듈 목록을 훑지 않고 모듈 순서 색인을 한 번만 만들며 연산 순서와 Stage 1 출력은 그대로입니다.
5.19.507내부셀프호스트 컴파일러가 캡처를 비교할 때 양쪽에서 모듈 목록을 훑지 않고 이미 있는 직접 조회로 모듈 식별자를 읽습니다. 식별자 표기와 캡처 순서, Stage 1 출력은 그대로입니다.
5.19.506내부캡처를 정렬할 때 모듈과 이름을 임시 정렬 키로 복사하지 않고 기존 값을 같은 순서로 비교합니다. Rust 컴파일러의 캡처 순서와 중복 제거, Stage 1 출력은 그대로입니다.
5.19.505내부네임스페이스 멤버 캡처가 참조마다 해석된 선언을 전부 훑지 않고 한 번 만든 색인으로 별칭을 찾습니다. 셀프호스트 컴파일러의 캡처 타입과 순서, Stage 1 출력은 그대로입니다.
5.19.504내부Rust 컴파일러가 멤버 캡처의 네임스페이스 별칭을 해석된 선언 전체를 훑지 않고 선언 단계에서 만든 색인으로 찾습니다. 별칭 동작과 캡처 순서, Stage 1 출력은 그대로입니다.
5.19.503내부캡처 대상 찾기가 참조마다 노드를 두 번씩 훑지 않고 이미 있는 위치 색인을 재사용합니다. 셀프호스트 컴파일러가 고른 대상과 캡처 순서, Stage 1 출력은 그대로입니다.
5.19.502내부Rust 컴파일러가 감싸는 클로저마다 모듈 목록을 훑고 이름을 복사하지 않고, 색인 하나로 캡처의 모듈을 찾아 최종 캡처에만 복사합니다. 캡처 내용과 Stage 1 출력은 그대로입니다.
5.19.501내부캡처 대상 해석이 참조마다 타입 노드를 다시 훑지 않고 한 번의 순회로 만든 위치 색인을 씁니다. Rust 컴파일러의 조회 순서와 캡처 사슬, Stage 1 출력은 그대로입니다.
5.19.500내부Rust 컴파일러의 호출 보강이 호출마다 참조 목록 전체를 거르지 않고, 참조를 파일별로 한 번 묶은 뒤 호출 대상이 들어갈 수 있는 구간만 살핍니다. 대상 식별자와 Stage 1 출력은 그대로입니다.
5.19.499내부이름 참조를 찾을 때 식별자와 멤버, 바인딩마다 전체 참조를 훑지 않고 정확한 위치로 조회합니다. Rust 컴파일러의 해석된 대상과 Stage 1 출력은 그대로입니다.
5.19.498내부Rust 컴파일러가 Stage 1 로 가는 길에 의미 타입을 두 번 복사하지 않고, 검사기가 가진 값을 그대로 쓰다가 마지막에 한 번만 복사합니다. 타입 표기와 연산, Stage 1 출력은 그대로입니다.
5.19.497내부Stage 1 을 만들 때 호출을 두 번째 표로 복사하지 않으며, 표현식마다 한 번의 조회가 호출 계획과 런타임 대체를 함께 처리합니다. Rust 컴파일러의 호출과 계획, Stage 1 출력은 그대로입니다.
5.19.496내부함수와 람다 연산이 만들어질 때 자기 위치를 기록하고 클로저의 부모를 거기서 읽습니다. 복사한 식별자 표와 전체 연산을 훑던 폴백 검색을 걷어냈으며 부모 관계와 Stage 1 출력은 그대로입니다.
5.19.495내부클로저 부모를 조회할 때마다 문자열을 만들지 않고 위치 숫자 두 개를 키로 씁니다. 셀프호스트 컴파일러의 부모 해석과 캡처 삽입, Stage 1 출력은 그대로입니다.
5.19.494내부미뤄 둔 let 패턴 피연산자에 식별자와 라벨을 미리 복사하지 않고 위치만 담았다가 내보낼 때 라벨을 구합니다. 셀프호스트 컴파일러의 피연산자 순서와 Stage 1 출력은 그대로입니다.
5.19.493내부셀프호스트 컴파일러가 연산을 받아들일 때 일반 피연산자를 바로 연결하고 let 패턴만 대기열에 담습니다. 모든 연산을 다시 훑던 두 번째 순회가 사라졌고 피연산자 순서와 라벨, Stage 1 출력은 그대로입니다.
5.19.492내부피연산자 라벨을 연산마다 복사하지 않고 한 곳에 두고 작은 위치 색인으로 찾습니다. 셀프호스트 컴파일러에서 읽히지 않던 내부 라벨도 없앴으며 라벨과 Stage 1 출력은 그대로입니다.
5.19.491내부셀프호스트 컴파일러가 피연산자 라벨을 가져오기 전에 부모가 컴프리헨션이나 for 인지 먼저 확인합니다. 그런 형태의 자식이 어차피 다시 만들어질 라벨을 복사하지 않으며 피연산자 순서와 Stage 1 출력은 그대로입니다.
5.19.490내부노드의 의미 타입과 런타임 표현을 연산을 조립하며 다시 계산하지 않고 한 번에 함께 구합니다. 셀프호스트 컴파일러의 모든 타입 대응과 Stage 1 출력은 그대로입니다.
5.19.489내부셀프호스트 컴파일러가 연산의 종류와 식별자를 정하는 같은 표에서 런타임 항목도 가져옵니다. 구문 종류를 다시 갈래짓던 큰 분기를 없앴고 모든 런타임 항목과 Stage 1 출력은 그대로입니다.
5.19.488내부제어 흐름 분류가 제어 종류와 연산의 대상 소유 여부를 한 곳에서 정합니다. 셀프호스트 컴파일러의 분기와 match, 반복, break, continue, return, 정리, 전파, concurrent 동작은 그대로입니다.
5.19.487내부연산 역할을 종류와 식별자를 정하는 같은 표에서 가져오고, 프로토콜 제외와 구현 메서드 요건만 별도 규칙으로 남겼습니다. 셀프호스트 컴파일러의 역할과 종류, Stage 1 출력은 그대로입니다.
5.19.486내부구문 노드를 연산 종류와 식별자 꼬리표로 각각 옮기던 거의 같은 표 두 개를 하나로 합쳤습니다. 모든 연산 종류와 식별자, Stage 1 출력은 그대로이며 셀프호스트 컴파일러의 중복 코드가 크게 줄었습니다.
5.19.485내부for 와 컴프리헨션 피연산자를 채웠다가 지우고 다시 만들지 않고 전용 단계에서 한 번만 만듭니다. 셀프호스트 컴파일러의 피연산자 순서와 짝짓기, Stage 1 출력은 그대로입니다.
5.19.484내부컴프리헨션 피연산자를 다시 만들 때 컴프리헨션마다 모듈 구문 트리 전체를 훑지 않고 첫 순회에서 기록한 자식 위치를 씁니다. 절 순서와 중복 제거, Stage 1 출력은 그대로입니다.
5.19.483내부피연산자 라벨을 연산마다 조상 사슬을 다시 걷지 않고 부모의 저장된 앞부분에 자기 조각을 붙여 한 번에 만듭니다. 라벨 표기와 피연산자 순서, Stage 1 출력은 그대로입니다.
5.19.482내부셀프호스트 컴파일러가 바인딩의 이름과 가변성, 저장 방식, 선언 식별자를 연산을 조립하며 다시 찾지 않고 한 번에 함께 만듭니다. 패턴과 매개변수, constusing 바인딩은 그대로입니다.
5.19.481내부구문 노드가 protocol 안에 있는지를 받아들일 때 표시해 두어, 자식이 조상 사슬을 걷지 않고 부모의 표시만 읽습니다. 셀프호스트 컴파일러의 프로토콜 처리와 Stage 1 출력은 그대로입니다.
5.19.480내부바인딩의 가변성을 이름이 붙은 바인딩마다 위로 거슬러 올라가지 않고 자기 let 부모에서 읽으며, 두 컴파일러를 그 값까지 맞대어 봅니다. 가변 let 과 매개변수, match 바인딩 동작은 이전과 같습니다.
5.19.479내부모든 연산을 두 번 훑지 않고 한 번의 순회로 피연산자를 붙이며 let 패턴만 뒤로 미룹니다. 셀프호스트 컴파일러에서 let 의 값 다음 패턴 순서와 나머지 피연산자 순서는 그대로입니다.
5.19.478내부노드를 받아들일 때 특별한 피연산자 재구성이 필요한 컴프리헨션과 for 노드를 기록해 둡니다. 이후 단계가 모듈 구문 트리 전체를 다시 훑지 않으며 피연산자 순서와 Stage 1 출력은 그대로입니다.
5.19.477내부타입 노드의 종류와 타입을 위치로 찾는 목록 하나에 한 번에 담고, 원본 노드 배열과 따로 있던 조회 두 개를 걷어냈습니다. 셀프호스트 컴파일러의 타입 표기와 표현, Stage 1 출력은 그대로입니다.
5.19.476내부참조의 최종 식별자를 조회할 때마다 같은 우선순위 규칙을 다시 적용하지 않고 한 번 정해 위치로 찾는 목록에 담습니다. 내장 이름 폴백과 Stage 1 출력은 그대로입니다.
5.19.475내부셀프호스트 컴파일러가 디코딩 과정에서 타입 붙은 호출을 노드마다 다시 읽지 않고 한 번에 하나의 계획으로 준비합니다. 호출이 없을 때의 형태와 인자·평가 순서, Stage 1 출력은 달라지지 않았습니다.
5.19.474내부모듈 캡처를 하나의 평평한 배열에서 모듈마다 훑어 고르지 않고 모듈별 목록으로 한 번에 나눠 담습니다. 모듈 순서와 캡처 순서, 범위를 벗어난 캡처의 생략, Stage 1 출력은 그대로입니다.
5.19.473내부람다와 메서드 선언이 노드를 받아들이는 시점에 클로저를 바로 연결하므로 나중에 구문 트리를 다시 훑던 단계가 사라졌습니다. 클로저 키와 캡처 순서·정체성, 부모 없음 오류, Stage 1 출력은 그대로입니다.
5.19.472내부빈 인덱스와 정리 목록을 사설 보조 함수 두 개 대신 그 값을 담는 자리에서 바로 만듭니다. 인덱스 키와 삽입 순서, 첫 직속 자식 선택, defer 정리 처리, Stage 1 출력은 그대로입니다.
5.19.471내부컴프리헨션 절이 절마다 구문 트리를 다시 훑지 않고 이미 만들어 둔 자식 인덱스에서 이터레이터와 패턴, 조건을 읽습니다. 절의 소스 순서와 if 조건·본문 동작, Stage 1 출력은 그대로입니다.
5.19.470내부최상위 함수의 바인딩 이름과 선언 정체성을 조회할 때마다 구문 트리를 전부 훑지 않고 이미 있는 자식 인덱스에서 가져옵니다. 바인딩 이름과 선언 구간, 참조 정체성 우선순위, Stage 1 출력은 그대로입니다.
5.19.469내부식별자와 임포트, 멤버 철자를 찾을 때마다 모듈 소스 전체를 UTF-8 로 다시 인코딩하지 않고 모듈마다 한 번 만든 바이트 버퍼를 잘라 씁니다. 철자와 잘못된 구간의 빈 문자열 처리, 프로파일 규칙과 결과는 그대로입니다.
5.19.468내부다른 모듈이 가져가지 않던 프로파일 레코드 두 개를 모듈 안쪽으로 감췄고, 빈 인덱스 Map 세 개는 더미 항목을 넣었다 빼던 보조 함수 대신 곧바로 만듭니다. 프로파일 규칙과 메시지, 결과는 그대로입니다.
5.19.467내부프로파일 검출 항목을 출력에서 두 번 훑지 않고 삽입 위치를 찾아가며 중복까지 함께 판정하는 한 번의 순회로 받아들입니다. 중복 판정 기준과 표준 정렬 순서, 병합 순서, 프로파일 결과는 그대로입니다.
5.19.466내부임포트마다 종류와 범위로 구문 트리를 다시 훑지 않고 프로파일이 이미 만들어 둔 자식 인덱스에서 모듈 경로를 얻습니다. 금지 모듈과 테스트 프레임워크 임포트 판정, 진단, 프로파일 결과는 그대로입니다.
5.19.465내부모듈 의존 순서를 정할 때 손으로 짠 삽입 정렬 두 개와 배열 밀어내기 대신 모듈 정체성을 한 번 정렬하고 인덱스로 고릅니다. 준비된 모듈 선택과 의존 순서, 순환 진단, 이름 해석 결과는 그대로입니다.
5.19.464내부지역 스코프마다 값과 타입 네임스페이스의 이름 Map 을 두어, 안쪽 스코프부터 바인딩을 전부 훑지 않고 식별자를 바로 찾습니다. 가림 규칙과 첫 바인딩 우선, 진단, 이름 해석 결과는 그대로입니다.
5.19.463내부이름 해석 모듈에서 다른 모듈이 가져가지 않던 작업용 레코드 여섯 개를 모듈 안쪽으로 감췄고, 내보내는 이름은 진입점 하나만 남았습니다. 받아들임과 임포트 표면, 진단, 이름 사실, 모듈 초기화, 해석 결과는 그대로입니다.
5.19.462내부내보낸 시그니처의 타입 검사와 가져온 초기화식 참조, 내보낸 이름 없음 검사가 바인딩을 다시 훑지 않고 이름 인덱스를 읽습니다. 충돌한 바인딩과 export let mut 은 여전히 내보낸 이름으로 세지 않으며 진단과 런타임 동작은 그대로입니다.
5.19.461내부바인딩 충돌을 기존 배열 전체를 훑지 않고 이미 만들어 둔 이름 인덱스로 찾아내며, TPZ3008 의 첫 바인딩 구간도 거기서 가져옵니다. 받아들임 순서와 충돌 메시지·구간·순서, 런타임 동작은 그대로입니다.
5.19.460내부받아들인 바인딩이 일반 이름 인덱스와, 내보낸 경우 내보낸 이름 인덱스에 함께 들어가서 모듈·지역·선택·네임스페이스 참조가 순서 배열을 훑지 않습니다. 선택 규칙과 제안, 진단, 런타임 동작은 그대로입니다.
5.19.459내부모듈 테이블에 순서 배열과 함께 정체성 인덱스를 두어 네임스페이스 계산과 선택·네임스페이스 임포트, 임포트 표면 검증이 테이블을 바로 고릅니다. 테이블 순서와 모듈 인덱스, 바인딩 순서, 진단, 런타임 동작은 그대로입니다.
5.19.458내부모듈 탐색이 불러온 모듈 정체성 집합의 소속 여부로 판정하고, 성공과 거부 결과가 공개 임포트 간선을 각각 다시 훑는 대신 한 번의 순회 결과를 함께 씁니다. 미해결 간선 제외와 중복 간선, 탐색 순서, 순환 진단은 그대로입니다.
5.19.457내부순환에 속한 모듈을 표시할 때 후보마다 새로 탐색하지 않고 기준 모듈당 정방향·역방향 도달 집합 하나씩을 씁니다. 표준 순환 경로와 주 구간, 자기 임포트 처리, 진단 문구와 순서, 의존 순서는 그대로입니다.
5.19.456내부순환 진단과 의존 순서 계산이 같은 그래프를 따로 만들고 분기마다 경로 배열을 복사하는 대신 정렬된 정체성과 의존 집합을 담은 모듈 그래프 하나를 함께 씁니다. 표준 순환 경로와 구간, 의존 순서, 순환일 때의 대체 순서는 그대로입니다.
5.19.455내부의존 순서 계산이 라운드마다 간선 목록 전체를 훑지 않고 해결·완료 집합과 모듈에서 의존 모듈로 가는 Map 으로 후보를 판정합니다. 중복 간선은 여전히 영향이 없고 해결되지 않은 대상은 제외되며 순서와 진단은 그대로입니다.
5.19.454내부Stage 0 이름 해석이 모듈과 간선 정체성을 여러 구조에 복사하지 않고 순환 탐색과 정렬 내내 빌려 쓰며, 정렬 중에는 순위로 모듈을 찾습니다. 의존 순서와 순환 진단·구간, 런타임 동작은 그대로입니다.
5.19.453내부모듈 초기화 오류에 나오는 임포트 사슬을 Stage 0 과 생성된 Rust 가 각자 만들지 않고 공용 부품 하나로 그립니다. Python 모듈 코퍼스에는 초기화 사례가 하나 늘었고, 인터프리터와 두 생성 백엔드의 오류 코드·메시지·구간·출력·파일이 일치합니다.
5.19.452내부지역 스코프가 선언 이름을 하나하나 복사하지 않고 모듈 소스에서 바로 빌려 쓰며, 사본은 오래 남는 선언 사실만 갖습니다. 스코프 순서와 가림, 선언 사실, 진단, 참조 대상, 런타임 동작은 그대로입니다.
5.19.451내부임시 모듈 테이블이 모듈 정체성을 저마다 복사하지 않고 이름 해석 결과에서 빌려 씁니다. 파일 정체성과 바인딩·내보내기, 진단, 참조 대상, 런타임 동작은 그대로입니다.
5.19.450내부모듈 테이블이 바인딩·내보내기 옆에 대상 파일을 함께 들고 있어서, 네임스페이스와 한정 타입 참조의 파일을 찾으려고 두 번째 인덱스를 만들던 일이 없어졌습니다. 진단과 참조 대상, 검사 결과, 런타임 동작은 그대로입니다.
5.19.449내부가져온 모듈이 즉시 평가되는 초기화식에서 뒤에 오는 바인딩을 읽으면 셀프호스트 컴파일러도 Stage 0 과 똑같이 TPZ3018 을 냅니다. 진입 모듈과 최상위 const 는 면제이고 함수·람다·defer·concurrent 본문처럼 나중에 평가되는 자리는 보고하지 않습니다.
5.19.448내부모듈 안쪽 타입을 내보낸 공개 표면에 쓰면 셀프호스트 컴파일러도 TPZ3014 로 거부합니다. 내보낸 함수의 매개변수와 반환, 중첩 타입 별칭 본문, 열거형 페이로드, 레코드 필드, newtype 기반이 대상이며 내보낸 타입은 그대로 허용합니다.
5.19.447내부셀프호스트 컴파일러의 임포트 진단이 Stage 0 과 문구까지 같아졌습니다. 아무것도 내보내지 않는 모듈의 메시지가 같아졌고, 없는 선택 임포트와 네임스페이스 값, 한정 타입에는 가장 가까운 내보낸 이름을 다시 제안합니다.
5.19.446내부레코드 필드 기본값에서는 다른 모듈의 변경 불가 네임스페이스 전용 let 을 다시 읽을 수 있습니다. 셀프호스트 컴파일러가 이전에는 TPZ3009 로 막던 자리이며, 기본값 밖이거나 변경 가능한 바인딩이면 여전히 거부합니다.
5.19.445내부protocol 선언이 셀프호스트 컴파일러의 바인딩과 내보내기 표에 더 이상 들어가지 않아, 같은 이름의 let 이 뒤따라도 받아들입니다. export protocol 은 Stage 0 처럼 TPZ2001 과 임포트 자유 문장 TPZ3007 로 거부합니다.
5.19.444내부or 패턴의 한 대안 안에서 이름이 되풀이되면 셀프호스트 컴파일러도 충돌로 보고합니다. let [x, x] | [x, x] = [1, 2] 는 되풀이된 자리마다 TPZ3008 을 내고 첫 바인딩을 가리키며 Stage 0 과 코드·메시지·개수·구간이 같습니다.
5.19.443내부모듈이 자기 자신을 가져오면서 더 긴 순환에도 끼어 있으면 셀프호스트 컴파일러가 자기 임포트 대신 여러 모듈 순환을 보고합니다. 자기 자신만 가져오는 모듈은 여전히 그 사실을 그대로 보고합니다.
5.19.442내부임포트 순환 진단이 같은 무리의 아무 간선이 아니라 실제로 보고하는 순환의 첫 간선을 가리킵니다. 자기 자신을 가져오는 모듈은 여전히 그 임포트를 가리킵니다.
5.19.441내부매니페스트가 extern 으로 선언하지 않은 형제 모듈을 가져오면 셀프호스트 컴파일러가 파일 없음 대신 TPZ5030 을 보고합니다. 잘못된 재생 열은 TPZ5032 로 거부하고, 예약된 topaz.* 메시지에 버전 경계 문구가 들어가며, 순환 무리 하나에는 진단도 하나만 냅니다.
5.19.440내부모듈 파일 이름 충돌을 셀프호스트 컴파일러가 Unicode 전체 케이스 폴딩과 정준 분해로 비교합니다. straße.tpzstrasse.tpz, 조합형과 분해형이 나란히 있으면 후보 이름을 함께 담아 TPZ3004 로 보고합니다.
5.19.439내부가져온 모듈의 최상위 비공개 protocol 을 두 컴파일러 모두 자유 문장이라 하지 않고 받아들입니다. 프로젝트 뿌리 밖 진입점은 즉시 멈추고, 임포트는 포함 여부를 먼저 본 뒤 경로 조각을 차례로 확인하며 모두 통과해야 소스를 읽습니다.
5.19.438내부셀프호스트 컴파일러의 경로 검사가 경로 조각 전체를 비교하므로 main..tpz 같은 파일은 받아들이고 root/../main.tpz 는 파일을 읽기 전에 TPZ3002 로 거부합니다.
5.19.437내부두 파서 모두 구문이 차지하는 중괄호를 바깥 표현식 자리에서만 예약해서 if ready {} 는 빈 본문을 지키고, 괄호 안 레코드 갱신이 다시 해석되며, match 갈래의 화살표가 람다 본문 앞에서 살아남습니다. make() {}TPZ2001 로 거부합니다.
5.19.436내부agent-pack 프로파일이 자유 assert 를 철자가 아니라 해석된 정체성으로 판정해서 사용자가 정의한 assert 는 받아들이고 기본 제공 쪽은 여전히 거부합니다. --compiler self --profile agent-pack 실행이 소스 검사까지 다시 진행되고, 내장 리스펙스 실행 기록도 현재 판으로 검증합니다.
5.19.435내부변경 메서드와 Array·Map 콜백, Option, Result, File 메서드가 생성된 Rust 에서도 일급 수신자 값이 되어 검사기와 인터프리터가 이미 받아들이던 범위를 따라잡았습니다. 예약 멤버 이름 목록도 하나로 합쳐 sortByupdate, set, named 같은 충돌을 막습니다.
5.19.434내부이름 붙인 ByteBuffer.setfill, copy 파이프, 일반·선택·파이프 필드 형태의 일급 okOr 값을 생성된 Rust 가 받아들입니다. 인터프리터가 이미 실행하던 것들이며, 콜백을 쓰는 okOrElse 는 호출 형태로만 남고 평가 순서와 오류는 그대로입니다.
5.19.433내부기본 수신자 호출이 직접·선택·파이프 어느 형태에서든 생성된 Rust 에서 이름 붙인 인자를 받고 ByteBuffer.setfill, copy 도 함께 인식합니다. 멤버 조회와 디스패치, 코드 생성이 공용 수신자 목록 하나를 읽으며 호출 형태와 오류는 그대로입니다.
5.19.432내부file.write 의 이름 인자 s 가 생성된 Rust 의 직접·파이프·선택·선택 파이프 형태에서 모두 동작해 검사기·런타임과 같아졌습니다. 세 로케일 공개 시그니처 페이지 모두 file.write(s: string) 을 보여 줍니다.
5.19.431내부리소스 readwrite, close 를 다루는 생성된 Rust 의 네 경로가 각자 만들던 기본 분기를 공용 조각 하나로 냅니다. 평가 순서와 호스트 효과·오류, 단락 처리, 소스 구간, 생성된 바이트는 그대로입니다.
5.19.430내부직접 sortByretain 이 공용 단일 콜백 인자 처리를 쓰고, 생성된 Rust 의 네 콜백 경로가 레코드 필드 가림 처리를 하나로 함께 씁니다. 인자 받아들임과 변경 가능 뿌리 오류 순서, 콜백 효과, 구간, 생성된 바이트는 그대로입니다.
5.19.429내부직접 mapfilter, sortedBy, mapValues, flatMap 이 생성된 Rust 에서 선택 경로가 쓰던 콜백 인자 처리와 콜백 본문 생성을 함께 씁니다. 컬렉션 동작과 콜백 지연·오류, 구간, 생성된 바이트는 그대로입니다.
5.19.428내부읽기 전용 수신자 호출이 자체 렌더링 반복을 버리고 생성된 Rust 의 다른 호출과 같은 공용 인자 준비를 씁니다. 스프레드 처리와 순서 위반 거부, 이름표, ByteBuffer.get 빠른 경로, 구간, 생성된 바이트는 그대로입니다.
5.19.427내부직접·선택 okOrElse 가 생성된 Rust 에서 인자를 한 번만 만들어 레코드 필드 가림 호출과 기본 분기가 그 결과를 함께 씁니다. 단락 처리와 파이프 앞자리·인자 순서, 자리표시자 동작, 콜백 지연, 구간, 생성된 바이트는 그대로입니다.
5.19.426내부Codec.zstdCompress 가 기본값을 다룰 수 있게 된 생성된 Rust 의 공용 고정 매개변수 바인더를 거치면서, 건네받은 인자를 세 번까지 복사하지 않고 한 번만 준비합니다. 위치·이름·기본값 동작과 거부 메시지, 생성된 바이트는 그대로입니다.
5.19.425내부값 호출과 사용자 수신자 메서드 호출, 레코드 필드 가림 호출, 기본 폴백의 인자를 생성된 Rust 가 세 번까지 훑지 않고 소스 순서로 한 번에 준비합니다. 순서 오류 시점과 스프레드 확장, 이름표, 우선순위, 구간, 생성된 바이트는 그대로입니다.
5.19.424내부스프레드 인자를 쓰는 수신자 호출이 생성된 Rust 에서 같은 인자 목록을 두 번 훑지 않고 한 번 만들어 값 호출과 인자 수 오류 분기가 함께 씁니다. 평가 순서와 스프레드 확장, 오류, 구간, 생성된 바이트는 그대로입니다.
5.19.423내부네임스페이스 호출과 수신자 호출의 스프레드 인자 오류 경로를 생성된 Rust 가 한 곳에서 만들고, 양쪽은 자기 임시 이름과 메시지만 건넵니다. 순서 처리와 평가 순서, 스프레드 구간, 인자 수 오류, 생성된 바이트는 그대로입니다.
5.19.422내부파이프로 이어지는 스프레드 수신자 호출이 생성된 Rust 에서 인자 목록을 한 번만 준비하고 레코드 필드 가림 분기와 인자 수 오류 분기가 그것을 함께 씁니다. 자리표시자 처리와 평가 순서, 스프레드 구간, 메서드 관문, 생성된 바이트는 그대로입니다.
5.19.421내부선택 Map.update 호출의 위치 인자 빠른 경로가 생성된 Rust 에서 자체 자리표시자 검사를 없애고 바인딩 경로와 같은 판정을 씁니다. 경로 선택과 호출 형태, 갱신과 콜백 되쓰기, 오류, 구간, 생성된 바이트는 그대로입니다.
5.19.420내부파이프 호출의 자리표시자 판정과 경로 선택 조건을 생성된 Rust 가 한 번만 정의해 바인더와 선택 reduce·Map.update 경로가 함께 씁니다. 바인딩 순서와 빠른 경로, 이름표, 오류, 구간, 생성된 바이트는 그대로입니다.
5.19.419내부정적 파이프 인자를 생성된 Rust 가 한 번만 담아 두고 매개변수 자리와 레코드 필드 가림 처리가 인덱스로 참조해서, 쓰거나 끼워 넣는 값마다 생기던 복사가 하나 줄었습니다. 생성된 표기와 바이트, 바인딩, 이름표, 오류는 그대로입니다.
5.19.418내부선택 파이프 reduceMap.update 가 생성된 Rust 에서 준비된 인자 텍스트를 복사하지 않고 그 자리에서 읽습니다. 평가 순서와 바인딩, 이름표, 접기 동작과 갱신 관문, 콜백 되쓰기, 구간, 생성된 바이트는 그대로입니다.
5.19.417내부reduceMap.update 의 이름 인자 호출이 생성된 Rust 에서 인자 준비를 하나로 함께 쓰고, 메서드마다 있던 거부 메시지는 그대로 둡니다. 소스 순서 효과와 이름 인자 재정렬, 이름표, 오류 순서, 동작은 달라지지 않았습니다.
5.19.416내부Array 콜백 변경 메서드 sortByretain 을 생성된 Rust 가 직접·선택 수신자 모두 한 곳에서 만듭니다. 오류 순서와 필드 가림 처리, 되쓰기 전 콜백 오류, 안정 정렬, 남는 항목 순서, 구간, 동작은 그대로입니다.
5.19.415내부Map 의 filtermapValues 를 생성된 Rust 의 공용 조각 하나가 만들고, 직접·선택 경로는 둘 중 무엇인지만 고릅니다. 실행 시 filter 는 다른 순회 가능 값도 다루고 mapValues 는 Map 전용으로 남으며 동작은 그대로입니다.
5.19.414내부or 패턴과 구조 패턴이 생성된 Rust 에서 넓어진 바인딩 스코프의 본문과 선택 가드를 만드는 공용 마무리 단계 하나를 씁니다. 바인딩이 보이는 범위와 첫 일치 우선, 흘림, 가드 오류, 동작은 그대로입니다.
5.19.413내부단일 바인딩 갈래와 바인딩 없는 갈래가 생성된 Rust 에서 선택적인 정적 조건과 가드를 받는 공용 마무리 하나로 완성됩니다. 가드가 보는 범위와 첫 일치 우선, 가드가 거짓일 때의 흘림, 동작은 그대로입니다.
5.19.412내부match 의 와일드카드 갈래와 리터럴·범위 갈래가 생성된 Rust 에서 마무리 경로 하나를 함께 쓰며, 정적 조건이 없는 쪽이 반박 불가 와일드카드입니다. 비교 의미와 가드 순서, 첫 일치 우선, 흘림, 동작은 그대로입니다.
5.19.411내부구조 패턴 여섯 갈래 모두를 최상위에서도 중첩에서도 생성된 Rust 의 같은 재귀 처리기가 맡아 별도 어댑터 네 개가 사라졌습니다. 생성된 코드의 임시 이름이 그만큼 밀리는데 이는 생성된 식별자가 바뀌는 것이지 언어 동작이 바뀌는 것은 아닙니다.
5.19.410내부구조 패턴 여섯 갈래를 둘러싼 준비와 마무리를 생성된 Rust 가 한 곳에서 관리하고, 각 갈래는 자기 패턴 단계만 건넵니다. 생성자 받아들임과 명목 정체성, 중첩 패턴, 가드, 구간, 동작은 그대로입니다.
5.19.409내부포괄 바인딩 갈래와 타입 붙은 단일 바인딩 갈래가 생성된 Rust 에서 따로 되풀이하던 스코프 확장과 가드보다 본문을 먼저 두는 순서, 마무리를 함께 씁니다. 맨 열거형 변형 경로는 같은 본문을 두 스코프에서 만들기 때문에 따로 남으며 동작은 그대로입니다.
5.19.408내부리터럴 패턴 조건과 범위 패턴 조건에 생성된 Rust 안에서 주인이 하나씩 생겼고, 바인딩 없는 갈래는 마무리를 함께 씁니다. 보간 문자열 거부와 음수 끝값, 포함·미포함 범위, 비교 오류, 첫 일치 우선, 동작은 그대로입니다.
5.19.407내부Rust 백엔드가 | 로 이어 붙인 패턴을 최상위에서 쓰든 중첩해서 쓰든 하나의 공용 준비 경로로 처리합니다. 대안 허용 판정과 바인딩 이름 정렬, 첫 일치 연결이 같은 규칙을 따르며 바인딩 순서와 스코프, 가드, 진단, 생성된 동작은 그대로입니다.
5.19.406내부최상위에서 | 로 이어 붙인 패턴에 case [x, x] | [x, x] 처럼 같은 이름을 두 번 묶으면 잘못된 Rust 를 내보내지 않고 다른 패턴과 같은 메시지로 거부합니다. Rust 백엔드의 다섯 갈래 바인딩 추출이 하나의 거부 규칙과 하나의 튜플 모양을 함께 씁니다.
5.19.405내부for 와 식 for, 컴프리헨션 절이 Rust 백엔드에서 하나의 반복 패턴 경로를 함께 씁니다. 패턴 허용과 중복 바인딩 거부, 패턴 불일치 오류 TPZ5003 이 세 곳에서 똑같이 동작하며 반복 제어와 순서, 생성된 동작은 그대로입니다.
5.19.404내부리스트 패턴이 Rust 슬라이스 매칭 하나로 컴파일됩니다. 앞부분과 나머지, 뒷부분 바인딩을 떠받치던 인덱스 계산과 생성된 프로그램이 거기서 낼 수 있던 패닉이 사라졌고 빈 리스트와 고정 길이, 나머지, 중첩 패턴과 나머지 중복 거부, 오류 동작은 그대로입니다.
5.19.403내부enum 패턴에서 Rust 백엔드가 값을 두 번이 아니라 한 번만 살피고 각 페이로드를 검사된 조회로 묶어, 생성된 코드가 페이로드 인덱스에서 낼 수 있던 패닉을 없앴습니다. 일치하는 변형 태그의 인자 개수 오류 TPZ5004 는 메시지와 위치, 순서를 그대로 지킵니다.
5.19.402내부최상위 newtype 패턴과 중첩 newtype 패턴이 Rust 백엔드에서 같은 매칭을 씁니다. 생성된 코드가 검사 없이 값을 꺼내던 자리 두 곳이 사라졌고 선언 정체성과 인자 하나 모양 허용, 중첩 패턴, 가드, 오류 동작은 그대로입니다.
5.19.401내부패턴에 적힌 레코드 필드를 Rust 백엔드가 두 번이 아니라 한 번만 찾고, 검사된 바인딩 하나로 필드가 없을 때 생성된 코드가 낼 수 있던 패닉을 없앴습니다. 열린 매칭은 여전히 남는 필드를 받아들이고 선언 정체성도 먼저 확인합니다.
5.19.400내부이름 있는 레코드 스프레드가 스프레드를 평가한 직후 선언된 필드 목록을 검증합니다. 빠지거나 중복된 필드는 TPZ5004 를, 모르는 필드는 TPZ5006 을 내며 호스트 프로그램이 넘긴 값이 인터프리터를 멈추게 하거나 생성된 Rust 와 어긋나던 일이 없어졌습니다.
5.19.399내부Rust 백엔드의 concurrent 타임아웃 처리가 검사된 밀리초 값을 나중에 되찾지 않고 한곳에 지니므로 컴파일러에서 검사 없는 단계가 사라졌습니다. 문법과 타임아웃 및 else 동작, 진단, 생성된 동작은 그대로입니다.
5.19.398내부concurrent 타임아웃은 밀리초로 환산되어 부호 없는 64비트 값에 들어가야 합니다. 받아들이는 최대치는 18446744073709551615ms18446744073709551s, 307445734561825m 이고 그보다 한 칸 큰 값은 검사기부터 두 코드 생성기까지 어디서나 TPZ5001 로 거부합니다.
5.19.397내부인터프리터가 중단 가능한 실행 상태를 한곳에 모아 둡니다. concurrent 갈래와 defer 동작이 각자 필드 목록을 관리하지 않고 들어갈 때와 나올 때 문맥 전체를 한 번씩 교체하며 동작과 스케줄링, 진단은 그대로입니다.
5.19.396내부오류가 난 defer 동작이 더 이상 뒷자리를 남기지 않습니다. 바깥 컴프리헨션이 결과를 온전히 지키고, 오류가 난 레코드 기본값 뒤로 비공개 모듈 상태를 읽을 수 없게 되며, 새어 나온 타입 파라미터가 다음 defer 에 닿지 않습니다.
5.19.395내부나란한 concurrent 갈래가 서로를 어지럽히지 않습니다. 병렬 갈래에서 도는 컴프리헨션이 결과를 온전히 내고, 멈춰 있는 레코드 기본값을 통해 모듈이 내보내지 않은 값을 읽으려 하면 TPZ5001 로 막힙니다.
5.19.394내부물음표가 가져온 모듈의 레코드 기본값 밖으로 오류를 전파할 때, 생성자가 풀리면서 그 기본값에 주어졌던 비공개 접근 권한도 함께 걷힙니다. 모듈이 내보내지 않은 값을 나중에 읽으면 값이 나오지 않고 TPZ5001 이 납니다.
5.19.393내부인터프리터에서 함수를 떠나는 모든 길이 하나의 출구를 지납니다. 끝까지 흐르는 경우와 명시적 return, 물음표 전파, case 갈래 반환이 모두 같으며 defer 시점과 반환 타입 가드, 그 오류 메시지와 위치는 그대로입니다.
5.19.392내부인터프리터의 클로저 호출이 인자 개수와 스프레드, 이름 붙은 자리를 살아 있는 상태를 건드리기 전에 모두 검사하고, 거부는 모두 하나의 출구를 거쳐 호출자 환경으로 돌아옵니다. 오류 우선순위와 메시지, 위치, 모듈 간 동작은 그대로입니다.
5.19.391내부이름 붙은 인자를 파라미터에 맞추는 규칙을 두 엔진의 내장 함수 호출과 클로저 호출, extern 호출이 함께 씁니다. 중복되거나 모르는 인자 이름은 어디서나 같은 방식으로 거부되며 인자 개수와 기본값, 타입 가드는 호출 형태마다 그대로 남습니다.
5.19.390내부생성된 Rust 에서 concurrent 마감이 지나면 else 블록이 돌기 전에 대기 중인 갈래와 그 부분 결과가 먼저 풀립니다. 인터프리터가 이미 하던 대로이며 갈래가 붙잡고 있던 것도 else 효과가 시작되기 전에 놓입니다.
5.19.389내부클로저 값을 부르는 네 가지 방식이 생성된 Rust 에서 하나의 경로를 지납니다. 보통 호출과 스프레드, 이름 붙은 인자, 스프레드와 이름 붙은 인자를 함께 쓰는 호출이 재귀 한계와 인자 개수 규칙, 기본값 평가, 인자 이름 오류를 공유하며 동작은 그대로입니다.
5.19.388내부생성된 Rust 에서 이름 붙은 인자로 클로저를 부르는 두 방식이 스프레드 유무와 상관없이 재귀 한계와 인자 개수, 자리 채우기, 기본값 평가, 인자 이름 오류를 하나로 씁니다. 스프레드는 여전히 가변 파라미터를 요구하고 건너뛴 고정 자리마다 기본값이 있는지 확인합니다.
5.19.387내부내장 함수의 이름 붙은 인자를 두 엔진이 같은 파라미터 목록에서 묶고, 수신자에 붙은 mapfilter, reduce 는 수신자가 이미 채운 파라미터를 빼고 셉니다. 스프레드와 이름 붙은 인자를 함께 쓸 때는 가변이 아닌 스프레드를 거부하기 전에 이름 오류를 먼저 알립니다.
5.19.386내부합성 함수가 생성된 Rust 에서 하나의 경로로 마무리됩니다. 어떤 호출 형태를 쓰든 왼쪽 함수에는 그대로 전달되고 오른쪽 함수는 언제나 중간값 하나만 받으며 인자 묶기와 평가 순서, 오류 위치는 그대로입니다.
5.19.385내부Option.okOrElse 가 두 엔진에서 같은 정의로 동작합니다. Some 은 콜백을 부르지 않고 Ok 로 끝나고, None 은 인자 없이 한 번만 부른 뒤 결과를 Err 로 감싸며, 다른 수신자는 여느 때처럼 없는 멤버 오류를 냅니다.
5.19.384내부Option.flatMapResult.flatMap 이 두 엔진에서 map 과 같은 정의를 씁니다. SomeOk 은 콜백을 한 번 부르고 그 결과를 그대로 돌려주며, NoneErr 은 손대지 않고 지나가고, 다른 수신자는 어느 엔진에서든 없는 멤버 오류를 냅니다.
5.19.383내부Option.mapResult.map 이 두 엔진에서 한 번만 정의됩니다. SomeOk 은 콜백을 한 번 부르고 결과를 다시 감싸며, NoneErr 은 콜백 없이 지나가고, 다른 수신자는 전과 같이 배열 매핑으로 넘어갑니다.
5.19.382내부Map.update 가 하나의 공용 정의로 돕니다. 없는 키는 함수를 부르지 않고 초깃값을 넣고, 있는 키는 함수를 한 번 부른 뒤 결과를 원래 자리에 다시 쓰며, 삽입 순서와 별칭에 보이는 변경, 해시할 수 없는 키 오류는 그대로입니다.
5.19.381내부Map.filterMap.mapValues 가 두 엔진에서 하나의 정의를 씁니다. filter 는 키와 값을 함께 넘겨 참일 때 원래 쌍을 남기고 mapValues 는 값만 넘겨 결과를 같은 키에 놓으며 쌍의 순서는 그대로 지켜집니다.
5.19.380내부배열 retain 이 두 엔진에서 하나의 공용 정의로 돕니다. 술어는 앞에서 뒤로 원소마다 한 번씩 불리고 남은 원소는 별칭에서도 보이도록 수신자에 다시 쓰이며, 술어가 오류를 내면 배열은 손대지 않은 채로 남습니다.
5.19.379내부sortedBysortBy 가 하나의 공용 정의로 키를 모읍니다. 키 콜백은 정렬 전에 앞에서 뒤로 모두 돌고 sortedBy 는 새 배열을 돌려주며 sortBy 는 수신자에 다시 쓰고, 같은 키는 순서를 지키며 오류가 나면 수신자는 그대로 남습니다.
5.19.378내부인터프리터가 mapfilter, reduce 를 자유 함수로 부르든 배열 수신자에 붙여 부르든 같은 기계로 돌립니다. 수신자와 멤버, 인자의 평가 순서와 이름 붙은 인자 및 스프레드 동작, 콜백 효과, 오류, 결과는 그대로입니다.
5.19.377내부호출 자리마다 반복문을 펼치는 대신 생성된 Rust 가 mapfilter, reduce 를 하나의 공용 경로로 부릅니다. 자유 호출과 배열 수신자, 이름 붙은 인자와 파이프, 옵셔널 배열 형태를 모두 아우르며 평가 순서와 콜백 효과, 오류, 위치, 결과는 그대로입니다.
5.19.376내부mapfilter, reduce 를 그냥 함수로 부를 때의 인자 검사와 순회 순서, 결과 조립이 하나의 정의로 모였고 인터프리터와 생성된 Rust 가 그것을 함께 씁니다. 빈 입력과 콜백 순서 및 효과, 오류, 위치, 누산기 동작은 그대로입니다.
5.19.375내부printinput, open, FS 연산, Test 단언, 리스펙스 연산을 포함해 프로그램 밖에 닿는 내장 함수 30개가 두 엔진에서 하나의 공용 정의로 실행됩니다. 효과와 오류, 위치, 이름 붙은 인자 및 스프레드 묶기는 그대로입니다.
5.19.374내부변환 내장 함수 toInttoIntRadix, fromCodePoint, toFloat 가 두 엔진이 함께 쓰는 정의에 들어와 수신자 없는 순수 내장 함수 73개를 모두 덮습니다. 변환 결과와 인자 개수 및 타입 오류, 그 위치, 프렐류드 가림은 그대로입니다.
5.19.373내부BytesByteBuffer, Encoding, Codec, Hash, Cli, Path, Regex, CSV, TOML, URL, Date, BigInt, Decimal 의 정적 내장 함수 50개가 두 엔진이 함께 쓰는 정의로 들어와 모두 69개가 됐습니다. 기본 인자와 결과, 오류, 위치는 그대로입니다.
5.19.372내부Array.ofMap.new, Map.ofEntries, Set.of, JSON.stringify, JSON.parse, Math 멤버를 포함한 정적 내장 함수 19개가 인터프리터와 생성된 Rust 가 함께 부르는 정의 하나로 실행됩니다. 결과와 오류, 위치, 네임스페이스 가림은 그대로입니다.
5.19.371내부값으로 넘겨 쓸 수 있는 이름이 생성된 Rust 에서 늘었습니다. Array.ofMap.new, Set.of, JSON.stringify, JSON.parse, Math 멤버 열세 개가 여기에 들어오며 인터프리터에서는 이미 되던 것이고 직접 호출과 지역 바인딩에 의한 가림은 그대로입니다.
5.19.370내부네임스페이스 호출에서 그려 낸 인자를 Rust 백엔드가 두 벌이 아니라 한 벌만 지닙니다. 이름 붙은 인자는 여전히 소스 순서로 평가되어 파라미터 순서로 전달되며 개수와 이름, 중복, 누락, 스프레드, 이름 뒤 위치 인자 오류는 그대로입니다.
5.19.369내부동기 호출이든 비동기 호출이든 생성된 Rust 에서 export 를 부르는 길이 하나로 모였습니다. export 초기화와 필요한 멤버 해석, 호출 분배의 주인이 하나가 됐고 공개 인터페이스와 조회 오류 위치, 마감은 그대로입니다.
5.19.368내부프로그램 인자와 표준 입력을 초기화에 넘기려고 미리 만들어 두는 일이 생성된 Rust 에서 사라졌습니다. 초기화가 쓰지 않던 값이며 export 호출은 공개 서명을 그대로 지키고 진입점 선택과 명시적 main 인자, 초기화 순서, 결과도 그대로입니다.
5.19.367내부초기화 모양을 고르려고 생성된 텍스트에서 대기 표현을 찾던 일이 Rust 백엔드에서 사라졌습니다. 모든 생성 프로그램이 비동기 초기화 하나를 쓰며 초기화 순서와 값, 오류, export, 결과는 그대로입니다.
5.19.366내부메서드와 프로토콜 등록이 생성된 프로그램에서 항목마다 사본을 만들지 않고 정체성과 메서드 이름을 정적 문자열로 담습니다. 등록 순서와 중복 메서드의 나중 값 우선, 조회와 폴백 동작, 결과는 그대로입니다.
5.19.365내부생성된 프로그램의 프로토콜 호출 분배가 호출마다 조회용 이름을 새로 짓지 않습니다. 메서드를 모듈과 프로토콜, 타입, 메서드 이름으로 나눠 담고 그 조각을 빌려 찾으며 등록 순서와 내장 폴백, 결과는 그대로입니다.
5.19.364내부같은 타입에 메서드를 여러 개 등록할 때 생성된 프로그램이 타입 정체성을 메서드마다가 아니라 한 번만 만듭니다. 등록 순서와 중복 시 나중 값 우선, 시작할 때 비우기, 조회, 결과는 그대로입니다.
5.19.363내부타입과 이름 순서로 메서드를 찾으면서 생성된 프로그램이 두 문자열을 복사하지 않아 수신자 호출과 프로토콜 호출마다 할당 두 번이 사라집니다. 등록 순서와 중복 처리, 없는 메서드 동작, 결과는 그대로입니다.
5.19.362내부쌓아 둔 클로저 생성 소스를 마지막 서식 전에 통째로 복사하지 않고 Rust 백엔드가 그 자리에서 그려 냅니다. 클로저 생성 순서와 내용, 생성된 소스, 캡처 동작은 그대로입니다.
5.19.361내부이름마다 임시 문자열을 만들어 잇지 않고 생성된 Rust 의 export 이름 목록을 배열 리터럴로 한 번에 그립니다. export 선언 순서와 문자열 이스케이프, 돌려주는 목록, 런타임 동작은 그대로입니다.
5.19.360내부Rust 백엔드가 export 목록을 만들 때 모듈의 정본 런타임 export 집합을 다시 짓지 않고 빌려 씁니다. extern 모듈은 자기 목록을 바로 만들고, 내보내지 않은 이름 오류와 쓸 수 없는 export 오류, 타입만 가져오는 import, 생성된 코드는 그대로입니다.
5.19.359내부앞 단계에서 이미 구한 export 순서를 모듈 본문을 낼 때 그대로 다시 씁니다. 이름을 한 번 더 뽑는 일이 사라졌고 타입만 있는 선언은 그대로 지워지며 export 순서와 생성된 코드, 런타임 동작도 그대로입니다.
5.19.358내부모듈 자신의 런타임 export 를 가리키는 레코드 기본값을 목록을 훑지 않고 곧바로 찾습니다. 목록이 없으면 그냥 있다고 여기지 않고 위치가 붙은 컴파일러 오류로 알리며 필드 순서와 중복 제거, 런타임 동작은 그대로입니다.
5.19.357내부export 마다 모듈 바인딩을 훑지 않고 Rust 백엔드가 곧바로 찾습니다. 순서가 매겨진 export 목록이 여전히 레코드 필드 순서를 정하고 최상위 셀 export 는 이름표와 오류 동작을 그대로 지킵니다.
5.19.356내부골라 가져오는 import 가 늘어나는 목록 셋을 훑지 않고 집합 조회로 풀리며 진입 모듈과 그 아래 모듈이 같은 판정을 씁니다. 생성된 레코드의 선언 순서와 import 오류, 타입만 가져오는 import, 나온 코드는 그대로입니다.
5.19.355내부import 바인딩과 상수 바인딩이 Rust 백엔드의 모듈 스코프로 복사되지 않고 그대로 옮겨집니다. import 가 상수보다 앞서는 순서와 재선언 및 조회 동작, 나온 코드, 런타임 동작은 그대로입니다.
5.19.354내부내장된 리스펙스 실행기를 돌리는 모든 호스트에서, 인터프리터와 생성된 Rust, 생성된 Python 을 포함해 기록된 동작이 서로 맞아떨어집니다. 읽기 단계로 잘못 적혀 있던 define-syntax 진단 E120 은 제자리인 정규화 단계에서 보고합니다.
5.19.353내부내장된 리스펙스 실행기가 1.12.4 에서 1.19.4 로 올라갑니다. begin 을 이어 붙일 수 있고 빈 프로그램도 받으며 진단은 안정된 공개 E 코드를 쓰고, 명시적 출력 효과가 표준 출력에 쓰이며, 게스트 의미 오류는 종료 코드 1 로 끝나고 물러난 자원 프로필 둘은 곧바로 거부합니다.
5.19.352내부리스펙스 1.19.4 를 제품에 들이는 계획을 기록하고 고정했습니다. 어떤 파일을 옮기고 어떤 경계를 건드리지 않으며 어떤 순서로 진행할지를 담았고, 내장 실행기와 제품 동작은 다음 패치가 실행하기 전까지 그대로 둡니다.
5.19.351내부상수 값이 Rust 백엔드에서 하나의 키 있는 저장소에 모여, 이름이나 네임스페이스로 상수를 찾을 때 목록을 훑지 않습니다. 진입 상수와 모듈 상수, 가져온 레코드 기본값, 스칼라 함수 기본값이 이를 함께 쓰고 병합 우선순위는 전과 같습니다.
5.19.350내부어떤 이름이 상수인지 가리는 일이 Rust 백엔드에서 바인딩 목록을 뒤지는 대신 곧바로 찾는 일이 됐습니다. 진입 상수와 모듈 상수, 가져온 레코드 기본값이 같은 색인을 함께 쓰며 생성 순서와 상수 평가 순서는 그대로입니다.
5.19.349내부레코드 기본값이 쓰는 모듈 자신의 런타임 참조를 모을 때, 아무것도 찾을 수 없던 중복 이름 검사가 빠졌습니다. 최상위 바인딩이 정확히 하나라는 규칙이 이미 이름의 유일함을 보장하며 소스 순서와 참조 정체성은 그대로입니다.
5.19.348내부레코드 기본값 안에서 모듈 자신의 런타임 참조가 처음 나오는지를 늘어나는 목록을 훑지 않고 이미 본 이름 집합으로 가립니다. 같은 레코드 선언이 거듭돼도 그 집합을 다시 쓰며 첫 등장 순서와 생성된 숨은 필드 정체성은 그대로입니다.
5.19.347내부레코드 기본값이 가리킬 수 있는 앞선 불변 바인딩 이름을 집합으로 담아, 수집기가 목록을 뒤지지 않고 들어 있는지만 봅니다. 이름이 뒤따르는 레코드 기본값에 보이는 시점은 전과 똑같고 이름 사본은 만들지 않습니다.
5.19.346내부골라 가져오는 import 사실을 모을 때 받아들인 상수와 런타임 참조를 결과 목록을 훑지 않고 이름 색인 둘로 확인합니다. 소스 순서에서 먼저 받아들인 쪽이 이기는 동작과 별칭 처리, export 허용 판정은 그대로입니다.
5.19.345내부네임스페이스 import 사실을 한 번의 순회로 모으고 대상 모듈도 네임스페이스마다 한 번만 찾으며 이름이 붙은 상수 값과 런타임 참조를 함께 냅니다. export 이름 정렬과 대상 모듈이 없을 때의 동작은 그대로입니다.
5.19.344내부골라 가져오는 import 의 상수와 런타임 참조를 소스 순서로 한 번에 모으고, 레코드 기본값이 필요로 하는 비공개 런타임 참조는 이미 레코드를 훑던 그 순회에서 함께 거둡니다. 모듈을 따로 한 번 더 도는 일이 사라졌습니다.
5.19.343내부모듈 기본값에 필요한 것들이 상수 값부터 레코드 기본값 본문까지 모듈 최상위를 한 번 앞으로 훑는 동안 모두 모입니다. 소스 전체를 따로 도는 순회 여섯 개가 사라졌고 생성 결과는 그대로입니다.
5.19.342내부레코드 기본값이 어떤 이름을 가리켜도 되는지 가릴 때 앞뒤 문장을 다시 훑지 않습니다. 앞으로 한 번 걸으면서 남은 개수와 지금까지 본 변경 가능 이름을 들고 다니며 앞선 참조와 변경 가능 참조에 대한 판정은 그대로입니다.
5.19.341내부모듈 최상위에서 어떤 이름이 몇 번 묶이는지를 뒤에 따로 훑지 않고 이미 도는 선언 순회 안에서 셉니다. 타입 투영과 레코드 기본값 수집이 완성된 개수를 받아 쓰며 동작은 그대로입니다.
5.19.340내부별칭과 스키마, 이름 있는 타입, 메서드, 프로토콜의 날것 모음 대신 완성된 결과가 Rust 백엔드의 타입 단계로 넘어갑니다. 생성된 코드와 런타임 동작은 그대로입니다.
5.19.339내부생성된 Rust 백엔드가 모듈마다 별칭 해석을 한 단계에서 끝냅니다. 블록 안의 중첩 별칭을 훑어 가려진 항목을 걷어내고 이름이 겹친 별칭을 표시한 뒤 완성된 별칭표만 모듈 타입 정보 구성에 넘깁니다.
5.19.338내부모듈 경계를 넘는 숨은 런타임 참조 병합을 한 규칙이 맡아 병합 결과를 정렬하고 중복을 없앱니다. 프로그램 타입 정보 구성은 단계 순서만 맡습니다.
5.19.337내부한 단계가 모듈의 타입 정보 전체를 조립합니다. 지역 선언에서 별칭 투영을 거쳐 런타임과 레코드 기본값 사실까지 이어지며, 5.20 이름 신원 방식은 모듈마다가 아니라 프로그램 전체에서 한 번만 정합니다.
5.19.336내부런타임 값과 레코드 기본값 사실 수집을 한 단계로 묶었습니다. 가져온 상수, 자기 모듈과 외부 모듈의 런타임 참조, 숨은 참조, 미뤄 둔 기본값 식을 함께 모아 모듈 타입 정보를 완성하기 전에 넘깁니다.
5.19.335내부소스 순서 한 번의 통과로 모듈의 유효 별칭, 내보내기 타입 표면, 타입 가져오기 바인딩을 함께 만들고 이 셋을 한 결과로 넘깁니다.
5.19.334내부소스와 런타임 신원, 생성된 표준 모듈 출신 여부를 흩어진 세 자리 대신 모듈마다 하나의 사실로 묶었습니다. 타입 붙은 JSON 스키마 해석, 모듈 한정 타입 검사, 런타임 메서드 선택, 리스펙스 내장 기능 허용이 모두 같은 사실을 읽습니다.
5.19.333내부내보낸 상수 값, 런타임 내보내기 이름 집합, 불변 최상위 바인딩 이름 집합을 하나의 런타임 값 표면으로 모았습니다. 가져오기 상수 수집과 참조 수집, 레코드 기본값 분석이 같은 표면을 읽습니다.
5.19.332내부상수 값, 가져온 참조와 자기 모듈 참조, 숨은 참조, 미뤄 둔 기본값 식, 모듈 사이로 퍼지는 참조까지 흩어져 있던 여섯 묶음을 레코드 기본값 사실 하나로 합쳤습니다. 레코드 생성과 기본값 초기화, 모듈 간 전파가 같은 묶음을 씁니다.
5.19.331내부모듈의 메서드 정의와 프로토콜 이름을 지역 메서드 선언 하나로 함께 담습니다. 별칭 수집이 두 가지를 그 하나에서 읽고, 유효 수신자 메서드 후보 이름은 별칭 투영에 그대로 남습니다.
5.19.330내부네임스페이스 타입 가져오기와 선택 타입 가져오기를 바인딩 표 하나에 담습니다. 타입 붙은 JSON 선언 찾기, 네임스페이스 변형 탐색, 모듈 한정 타입 조회, 레코드 기본값 분석이 모두 같은 표를 봅니다.
5.19.329내부일반 별칭표, 제네릭 별칭표, 이름 충돌로 무효가 된 별칭 집합을 지역 해석 결과 하나로 묶었습니다. 모듈 별칭 조회, 모듈 한정 별칭 허용, 전이 한정 타입 판별이 모두 이것을 읽습니다.
5.19.328내부내보낸 타입 이름, 내보낸 enumrecordnewtype 정의, 내보낸 수신자 메서드가 하나의 내보내기 타입 표면을 이룹니다. 가져오기 투영, 모듈 한정 타입 검사, 별칭 허용, 변형 탐색이 여기서 읽습니다.
5.19.327내부지역 enumrecordnewtype 정의, 그리고 타입 별칭과 이 세 형태의 스키마 선언표 네 개를 지역 선언 하나로 묶었습니다. 흩어진 일곱 자리를 없앴고 별칭 해석과 스키마 조회, 타입 검사, 내보내기 추출이 한 곳을 읽습니다.
5.19.326내부유효 타입과 스키마, 수신자 메서드, 스키마 출처를 담던 열 개 묶음을 별칭 투영 하나로 접었습니다. 가져오기를 적용하는 단계가 여기에 바로 쓰고 별칭 수집이 같은 결과를 읽어 중간 어댑터가 사라졌습니다.
5.19.325내부유효 가져오기 투영과 스키마 출처 지도를 이미 도는 가져오기 통과에서 함께 확정합니다. 별칭 수집은 완성된 결과를 그대로 받아 쓰므로 모듈마다 두 번째 훑기와 출처 지도 재구성이 없어졌습니다.
5.19.324내부모듈 타입 정보와 별칭 수집이 이름 정의표 세 개, 스키마 선언표 네 개, 수신자 메서드 후보 집합을 복사하지 않고 함께 씁니다. 가져오기는 내보낸 항목을 받는 그 한 묶음만 복사합니다.
5.19.323내부별칭표와 충돌 집합을 깊이 복사하지 않고 함께 씁니다. 함수와 람다와 defer 본문 조회가 같은 표를 다시 쓰며, 다른 모듈에서 정의된 별칭을 볼 때만 필요한 합집합을 새로 만듭니다.
5.19.322내부별칭 수집이 이미 만들어 둔 모듈 정보를 다시 쓰고 가져오기 투영만 얹습니다. 두 번째 선언 수집과 가려진 별칭을 다시 훑는 작업, 쓰이지 않던 언어 버전 자리를 없앴습니다.
5.19.321내부최상위 메서드, 프로토콜, 타입 별칭, record, enum, newtype 선언을 소스 순서 한 번의 통과로 모읍니다. 고유 메서드 대상이 모두 모인 뒤 메서드 신원을 완성하므로 선언이 적힌 순서에 더는 좌우되지 않습니다.
5.19.320내부최상위 타입 별칭 수집이 스키마 참조, 일반 해석표와 제네릭 별칭표, 중복 이름 표시를 한 번의 통과로 만듭니다. 이어지는 구조 순회가 블록을 담을 수 있는 모든 자리에 블록 지역 별칭 가림 규칙을 똑같이 적용합니다.
5.19.319내부프로토콜 탐색을 메서드 수집 통과 안으로 옮겼습니다. 내장 ShowEqOrder 프로토콜을 먼저 심고 선언된 프로토콜 이름을 구현 대상, 디스패치 항목과 나란히 모으며, 정적 디스패치와 수신자 디스패치가 이 목록 하나를 함께 씁니다.
5.19.318내부스키마 선언과 enumrecordnewtype 의 런타임 정의를 별칭 수집과 모듈 간 타입 정보가 함께 쓰는 한 번의 통과에서 만듭니다. 이 통과에서 변형 개수와 순서, 레코드 필드, 기본값 소스 소유가 확정됩니다.
5.19.317내부컴파일 단위에 고유 메서드나 프로토콜 메서드 선언이 있는지를 선언 수집 중에 기록하고 항목을 내보낼 때 바로 읽습니다. 나중에 단위 전체를 다시 훑어 판단하던 별도 통과가 사라졌습니다.
5.19.316내부고유 메서드 대상과 내보낸 수신자 메서드 후보를 모듈 간 타입 정보가 한 번의 통과로 모읍니다. 그다음 후보를 완성된 내보내기 enumrecordnewtype 집합과 교차해 내보낸 수신자 메서드를 확정합니다.
5.19.315내부별칭 수집이 고유 메서드 대상, 프로토콜 한정 디스패치 항목과 고유 디스패치 항목, 수신자 호출 후보를 소스 순서 한 번의 통과로 만듭니다. 메서드 등록부가 필요한지는 기록된 사실을 바로 읽어 판단합니다.
5.19.314내부enumrecordnewtype 수집기가 별칭 경계와 모듈 간 경계 양쪽에서 고유 메서드 대상 수집 한 번의 결과를 함께 씁니다. 선언 신원과 메서드 신원이 그 한 벌의 입력에서 만들어집니다.
5.19.313내부가져오기로 들어오는 수신자 메서드를 가져온 타입 정의와 스키마를 투영하는 같은 통과에서 모읍니다. 덕분에 가져오기 대상과 선택한 이름을 각각 한 번만 해석합니다.
5.19.312내부선택 가져오기가 타입 정의와 recordenumnewtype 스키마를 위해 네 번 돌던 통과를 한 번으로 줄였습니다. 소스 순서 한 통과에서 가져오기 대상을 한 번 해석하고 찾아낸 내보내기 정의를 스키마 등록에 다시 씁니다.
5.19.311내부점으로 이어진 모듈 경로를 아홉 곳이 함께 쓰는 조립기 하나가 만듭니다. 가져온 상수, 진입 가져오기 계획, 수신자 메서드 가져오기, 타입 정의와 스키마가 모두 여기에 해당하며 가져오기와 별칭, 기본값, 진단, 생성 결과는 그대로입니다.
5.19.310내부모듈 최상위 이름이 몇 번 묶였는지를 모듈마다 한 번만 셉니다. 같은 목록을 다섯 번 다시 만들고 여섯 군데 유일성 검사에서 훑던 방식을 대신하며 충돌 처리와 레코드 기본값, 가져오기, 진단, 생성 결과는 그대로입니다.
5.19.309내부타입이 붙었든 아니든 단순 바인딩의 이름이 필요한 여섯 곳이 임시 목록을 만들지 않고 공용 투영 하나로 읽습니다. 여러 이름을 분해해야 하는 자리에는 기존 패턴 수집이 그대로 남고 내보내기 동작과 생성 결과도 그대로입니다.
5.19.308내부export let value: int = 41 처럼 타입을 붙인 내보내기가 생성된 Rust 백엔드에서도 컴파일됩니다. 해석과 검사, 인터프리터, 생성된 Python 을 모두 통과하고도 TPZ6001 로 막히던 문제가 사라졌으며 분해 패턴 내보내기 거부는 그대로입니다.
5.19.307내부제네릭 타입을 타입 인자 없이 이름만으로 쓰는 경우를 지역 타입과 선택 가져오기로 들어온 타입에서 똑같이 거부합니다. 인터프리터와 생성된 Rust 백엔드가 신원만 보고 통과시키지 않고 선언 대조로 넘어가 TPZ5099 개수 오류를 알립니다.
5.19.306내부모듈 한정 타입을 대조할 때 내보내기 여부와 타입 인자 개수를 인터프리터와 생성된 Rust 백엔드, 생성된 Python 에서 같은 규칙으로 확인합니다. 비공개 타입은 TPZ5001 오류로 내보낸 타입이 아님을 알리고, 인자 없이 이름만 쓴 제네릭도 더는 비제네릭으로 보지 않습니다.
5.19.305내부여섯 개의 모듈 한정 타입 대조 경로가 자리마다 신원 문자열을 다시 만들지 않고 정의에 저장된 신원을 그대로 비교합니다. 내보내기 허용과 제네릭 치환, 진단, 결과는 그대로입니다.
5.19.304내부enum 변형이나 recordnewtype 을 만들 때 이미 해석한 정의에서 메서드 신원을 바로 받아 선언 신원을 얻고 다시 찾지 않습니다. 신원과 디스패치, 필드와 변형 순서, 결과는 그대로입니다.
5.19.303내부패턴과 타입 대조를 하는 여덟 자리가 전역 표에서 타입을 다시 찾지 않고 enum 이나 recordnewtype 정의가 들고 있는 신원을 비교합니다. 패턴 폴백과 별칭, 제네릭 치환, 진단은 그대로입니다.
5.19.302내부생성 경로가 선언 신원과 메서드 신원을 한 번의 조회에서 함께 얻습니다. 예전에는 enum 변형과 recordnewtype 을 만들 때 두 신원을 위해 표를 두 번 훑었으며 생성 동작과 기본값 순서, 결과는 그대로입니다.
5.19.301내부5.20 방식에서 enum 값의 변형을 찾을 때 후보마다 전역 표를 다시 묻지 않고 후보 정의가 이미 들고 있는 신원을 비교합니다. 변형 순서와 개수, 별칭, 패턴, 결과는 그대로입니다.
5.19.300내부선택 가져오기가 대상 모듈을 한 번만 해석하고 런타임 바인딩과 enumrecordnewtype 정의를 그 한 번의 해석에서 가져옵니다. 별칭을 붙인 이름과 그렇지 않은 이름, 타입 전용 내보내기, 모듈 초기화는 이전과 같습니다.
5.19.299내부네임스페이스로 멤버를 읽을 때 모듈을 한 번만 해석하고 그 결과로 비공개 레코드 기본값 집합 조회와 환경 조회, 내보내기 허용을 함께 처리합니다. 동작과 진단 코드, 문구, 위치는 그대로입니다.
5.19.298내부모듈 조회와 내보내기 허용, 런타임 바인딩 유무, 내보내지 않았다는 진단을 선택 가져오기와 네임스페이스 접근이 함께 쓰는 조회 하나가 맡습니다. 타입 전용 내보내기와 런타임 네임스페이스 접근의 진단은 각자 그대로입니다.
5.19.297내부받아들인 내보내기 선언은 이름을 많아야 하나 남기므로 등록이 비었거나 하나뿐인 목록을 거치지 않고 그 이름을 바로 기록합니다. 어떤 선언이 이름을 내보내는지는 달라지지 않았습니다.
5.19.296내부인터프리터가 점으로 이어진 가져오기 경로를 모듈 정보 수집과 가져오기 실행 두 곳에서 각각 만들던 것을 조립기 하나로 합쳤습니다. 경로 문구와 별칭 바인딩, 없는 모듈 오류, 초기화 순서는 그대로입니다.
5.19.295내부타입 붙은 JSON 가져오기 범위의 대상 모듈 신원을 가져오기 항목마다 복사하지 않고 함께 씁니다. 이미 초기화된 모듈은 기존 키를 다시 쓰며 가져오기 경로와 모듈 간 스키마 출처, 결과는 그대로입니다.
5.19.294내부런타임 범위 키를 모듈마다 한 번 만들어 모듈 등록과 현재 모듈 신원, 모듈 지도, 소스 색인이 함께 씁니다. 모듈 신원과 순서, 경로 배정, 가져오기와 내보내기 동작은 그대로입니다.
5.19.293내부실행 중인 모듈의 선언 신원을 한 번 만들어 함께 씁니다. 진입 모듈은 별도의 없음 상태 대신 빈 신원을 지니며 내보내기 수집과 외부 함수 디스패치, 반복 실행은 이전과 같습니다.
5.19.292내부같은 선언 신원을 모듈 등록과 모듈 타입 범위가 두 벌 두지 않고 하나로 나눠 씁니다. 타입 붙은 JSON 선언 해석도 문자열을 복사하지 않고 그 신원을 돌려주며 프로토콜 디스패치와 네임스페이스 적합성 검사는 그대로 읽습니다.
5.19.291내부전역 enumrecordnewtype 표를 모듈 준비 도중에 곧바로 고치던 부수 효과를 없앴습니다. 완성된 모듈이 자기 정의를 지니고 있다가 모듈을 설치하는 한 지점에서 전역 표에 공개합니다.
5.19.290내부선언 신원과 런타임 범위 키를 준비된 모듈이 지니는 모듈 신원 하나로 묶었습니다. 준비 단계와 설치 단계가 두 값을 나란히 주고받지 않으며 경로 배정과 가져오기, 내보내기, 반복 실행은 그대로입니다.
5.19.289내부자리만 잡아 미리 넣어 두던 모듈 범위 예약을 없앴습니다. 완성된 모듈을 먼저 만들어 새 항목은 한 번에 완전한 상태로 넣고, 이미 있는 항목은 최상위 환경과 런타임 내보내기를 지킨 채 프로그램 상태만 갈아 끼웁니다.
5.19.288내부모듈을 준비하면 타입 범위와 레코드 기본값이 읽을 수 있는 비공개 값, 호출 가능 항목 등록 계획을 담은 완성된 결과 하나가 나옵니다. 설치는 그 결과를 한 경계에서 풀어 씁니다.
5.19.287내부메서드와 프로토콜 구현, 프로토콜 선언을 등록할 계획을 준비 단계에서 만들며 선언을 복사하지 않고 소스에서의 위치만 기록합니다. 등록 시점에 항목 전체를 다시 훑던 통과가 사라졌고 등록 순서는 그대로입니다.
5.19.286내부준비 단계가 모듈 최상위를 여섯 번이 아니라 한 번만 읽습니다. 타입 붙은 JSON 가져오기 경로, 비공개 불변 값, 타입 별칭, enumrecordnewtype 정의를 함께 모으며, 메서드 대상 훑기는 신원이 완전한 집합을 필요로 해 따로 남겨 두었습니다.
5.19.285내부프로그램 준비가 모듈 타입 범위를 지역에서 조립해 메서드 등록과 문장 실행 전에 한 번만 제자리로 옮깁니다. 가져오기와 최상위 별칭, 타입 붙은 JSON 경로, 타입 정의가 그 범위 하나에 바로 기록됩니다.
5.19.284내부단독 프로그램과 해석된 단위 모듈, 생성된 표준 모듈 모두 모듈 범위를 한 곳에서만 만듭니다. 단위 초기화는 소스와 환경, 신원을 갖춘 뒤 넘겨주며 초기화 순서와 결과는 그대로입니다.
5.19.283내부타입 정보를 소스별이 아니라 모듈별로 담고 소스에서 모듈로 가는 가벼운 색인만 남겼습니다. 별칭 조회와 프로토콜 디스패치, 타입 붙은 JSON 경로 배정이 소스 키 포장을 거치지 않고 모듈을 바로 읽습니다.
5.19.282내부모듈 신원으로 찾는 항목 하나가 런타임 범위와 타입 범위를 함께 지니며 나란히 있던 두 지도를 대신합니다. 가져오기 허용과 내보내기, 모듈 한정 타입 조회, 타입 붙은 JSON 경로 배정이 그 한 항목에서 읽습니다.
5.19.281내부실행 중인 모듈의 신원과 외부 모듈 여부를 현재 모듈 문맥 하나로 함께 담고 모듈마다 한 번에 갖춥니다. 외부 모듈 재실행과 내보내기 경계, 초기화 순서는 그대로입니다.
5.19.280내부현재 모듈의 선언 한정자와 런타임 범위 키를 모듈마다 한 번 만드는 신원 하나에 담습니다. 진입 모듈은 선언 한정자를 두지 않으면서도 자기 신원을 런타임 범위 키로 그대로 씁니다.
5.19.279내부최상위 환경과 내보낸 이름, 비공개 불변 값을 모듈 신원으로 찾는 런타임 항목 하나에 담아 나란히 있던 세 지도를 대신합니다. 가져오기 조회와 내보낸 값 확인, 레코드 기본값 접근이 그 항목을 읽습니다.
5.19.278내부정의 소스와 타입 붙은 JSON 가져오기 경로, 타입 정의를 모듈 신원으로 찾는 타입 항목 하나로 모아 나란히 있던 세 지도를 대신합니다. 선택 가져오기와 모듈 한정 타입 조회, 스키마 경로 배정이 같은 항목을 읽습니다.
5.19.277내부소스에 딸린 타입 상태, 곧 소속 모듈 신원과 최상위 타입 별칭, 타입 붙은 JSON 선언을 나란한 세 지도 대신 항목 하나에 담습니다. 별칭 스프레드과 스키마 생성이 같은 항목을 읽고 클로저 소스 교체 뒤에도 모듈 신원이 이전처럼 복구됩니다.
5.19.276내부enumrecordnewtype 정의가 저마다 신원과 선언에 더해 정의된 소스까지 함께 지니므로 선택 가져오기용 경로 지도 세 개가 사라졌습니다. 지역 조회와 모듈 한정 조회가 선언 위치를 정의에서 바로 읽습니다.
5.19.275내부메서드 신원을 타입마다 한 번 계산해 정의와 함께 담으므로 나란히 있던 신원표 두 개가 사라졌습니다. 메서드 등록과 신원 조회가 타입 표에서 바로 풀리며 5.20 과 5.19 의 신원 동작은 그대로입니다.
5.19.274내부enumrecordnewtype 의 선언 전체가 런타임 신원, 실행 자료와 함께 서술자 하나에 들어가고 나란히 있던 선언표 네 개를 없앴습니다. 모듈 적재와 선택 가져오기, 모듈 한정 조회가 같은 서술자를 씁니다.
5.19.273내부런타임 신원과 실행 자료를 enumrecord 마다 서술자 표 하나로 합쳐 나란히 있던 신원 지도 네 개를 없앴습니다. 모듈 적재와 활성 정의, 선택 가져오기가 서술자를 그대로 함께 씁니다.
5.19.272내부변형 표와 레코드 필드, 기본값 차례를 모듈 초기화 때 한 번 만들어 이후로는 함께 씁니다. 선택 가져오기가 실행 자료를 통째로 복사하지 않고 나눠 쓰며 복사하던 다섯 경로가 참조만 주고받고 순서와 개수, 기본값은 그대로입니다.
5.19.271내부제네릭 타입 인자를 파서가 한 번만 만들어 검사기와 스키마 투영, Python 백엔드가 함께 씁니다. 제네릭 적합성 검사와 별칭 확장이 노드를 복사하지 않으며 중첩 제네릭, 타입 패턴, JSON 스키마 출력, 진단은 그대로입니다.
5.19.270내부파이프라인 단계가 파서가 만든 구문 노드 하나를 재사용하고 실행 중에 파이프 오른쪽을 복사하지 않습니다. 평가 순서와 자리표시자 치환, 첫 인자 삽입, 필드 축약, 진단은 이전과 똑같습니다.
5.19.269내부배열과 집합, Map 컴프리헨션이 파서가 만든 본문 노드 하나를 공유해 인터프리터가 복사 없이 각 절로 넘깁니다. 절 순서와 스코프, 키와 값 평가, 중복 처리, 진단, 결과는 동일합니다.
5.19.268내부newtype 선언을 한 번만 저장해 이름 기반 스키마와 스키마 선언, JSON 스키마 출력이 함께 쓰며 실행 중 세 번 복사하던 일이 없어졌습니다. 생성과 값 꺼내기, 패턴 매칭, 제네릭 매개변수, 진단은 그대로입니다.
5.19.267내부레코드 선언과 필드 기본값 식을 파서가 한 번만 만들어 스키마 선언과 JSON 스키마 출력, 레코드 생성이 함께 쓰므로 실행 중 복사가 사라졌습니다. 필드 순서와 기본값, 갱신, 파생, 진단은 달라지지 않았습니다.
5.19.266내부enum 선언을 한 번만 두고 이름 기반 스키마와 스키마 선언, JSON 스키마 출력이 함께 쓰도록 바꿔 실행 중 세 번 복사하지 않습니다. 변형 순서와 인자 수, 생성, 패턴 매칭, 파생, 결과는 그대로입니다.
5.19.265내부타입 별칭 선언과 그 뒤의 타입을 별칭 표와 스키마 출력, 블록 스코프, Python 백엔드가 복사 없이 함께 씁니다. 별칭과 제네릭 매개변수 해석, 타입 확장, 적합성, 진단, 결과는 그대로입니다.
5.19.264내부defer 동작을 식의 복사 없이 참조로 등록하도록 바꿔 실행 중 부담이 줄었습니다. 등록 위치와 어휘 스코프, 나중에 등록한 것부터 실행하는 순서, 조기 종료 되감기, 오류 처리는 그대로입니다.
5.19.263내부구조 분해 let 바인딩이 인터프리터가 바인딩 단계를 만들 때 패턴을 복사하지 않고 그대로 재사용합니다. 바인딩 규칙과 가변성, 패턴 매칭, 진단, 결과는 달라지지 않았습니다.
5.19.262내부문자열 리터럴을 보간과 태그 템플릿이 도는 동안 복사하지 않고 공유해 문자열마다 하는 일이 줄었습니다. 이스케이프 해석과 태그 조회, 조각 순서, 렌더링, 템플릿 조각과 값, 결과는 그대로입니다.
5.19.261내부대입이 중첩된 멤버와 인덱스 경로, ??= 까지 포함해 분석된 대상과 값을 단계마다 복사하지 않고 재사용합니다. 대상 검사와 가변성 확인, 평가 순서, ??= 의 지연 평가, 옵셔널 경로 거부, 중첩 갱신은 그대로입니다.
5.19.260내부for 반복문 패턴을 한 번만 만들어 최상위 문장이든 블록 안이든 값 식이든 같은 것을 재사용합니다. 바인딩과 순회 순서, 반복 스코프, breakcontinue, 모은 값, 진단은 그대로입니다.
5.19.259내부while 조건을 바인딩 패턴을 쓴 형태까지 포함해 한 번만 만들고 반복마다 복사하지 않고 재사용합니다. 조건과 본문의 평가 순서, 스코프, breakcontinue, 반복 결과는 그대로입니다.
5.19.258내부레코드 리터럴과 갱신의 각 명시 필드 식을 한 번만 만들어 검사기와 백엔드, 레코드 평가가 함께 쓰며 이름 기반 레코드에서 복사하지 않습니다. 소스와 평가 순서, 스프레드, 기본값, 만들어지는 레코드는 그대로입니다.
5.19.257내부스프레드이 있는 이름 기반 레코드를 만들 때 분석된 스프레드 식을 복사하지 않고 재사용합니다. 명시 필드 검사와 중복·알 수 없는 필드 진단, 바탕부터 평가하는 순서, 기본값, 필드 순서는 그대로입니다.
5.19.256내부멤버 접근이 수신자를 공유 자리 하나에 두어 컬렉션과 문자열, Option, Result, JSON, 바이트, 경로, 날짜의 기본 메서드가 수신자 전체를 복사하지 않습니다. 멤버 해석과 가변성 확인, 없는 멤버 진단, 메서드 선택은 그대로입니다.
5.19.255내부JSON.parseAsJSON.decode 가 파이프와 자리표시자를 거치는 경우까지 인자 식을 복사하지 않고 호출 자리에서 바로 평가합니다. 인자 검사와 진단, 스코프, 평가 순서, 디코딩 동작은 이전과 같습니다.
5.19.254내부concurrent 식의 각 갈래를 파서가 한 번만 만들어 검사기와 백엔드가 함께 쓰므로 갈래를 시작할 때 본문을 복사하지 않습니다. 갈래 순서와 격리된 환경, 번갈아 실행하는 방식, 제한 시간, 오류 동작은 그대로입니다.
5.19.253내부concurrent 의 제한 시간 else 블록을 복사하지 않고 실행 중인 식에 바로 넘깁니다. 제한 시간 처리와 갈래 배치, 만료, 중단, else 실행은 그대로입니다.
5.19.252내부보통 호출과 함수 값 호출, 기본 함수 호출, 파이프를 지나는 호출이 피호출자를 새 단계로 복사하지 않고 제자리에서 평가합니다. 특수 호출 경로와 피호출자를 인자보다 먼저 평가하는 순서, 단축 평가는 그대로입니다.
5.19.251내부보간 문자열과 태그 템플릿이 리터럴을 들어올 때 한 번만 만들고 조각마다 전체와 조각을 복사하는 대신 제자리에서 평가합니다. 해석과 순서, 렌더링, 템플릿 조각과 값은 그대로입니다.
5.19.250내부match 가 가드와 갈래 본문, return 값을 평가하기 전에 스코프를 먼저 세우고, 공유하는 케이스 목록에서 복사 없이 바로 가져옵니다. 케이스 순서와 바인딩 스코프, 반환 동작은 그대로입니다.
5.19.249내부SomeOk, Err, newtype 생성자가 인자를 제자리에서 평가하고, enum 과 프로토콜 호출은 복사한 노드를 뒤집어 쌓는 대신 공유 목록 하나를 왼쪽에서 오른쪽으로 훑습니다. 파이프를 지나는 호출을 포함해 인자 순서는 그대로입니다.
5.19.248내부보통 호출과 메서드 호출, 옵셔널 호출이 각 인자를 공유 인자 목록에서 바로 가져오고 끝난 값을 복사하지 않고 스택으로 옮깁니다. 평가 순서와 인자 순서는 그대로입니다.
5.19.247내부배열 원소와 스프레드, 집합 원소, Map 의 키와 값, 레코드 필드 값을 바깥 리터럴이 들고 있는 공유 목록에서 바로 평가하며 자식마다 복사하지 않습니다. 평가 순서와 결과는 그대로입니다.
5.19.246내부검사기가 인자를 보기 전에 바깥 호출의 기대 결과 타입을 알게 되어 Result.flatMap 콜백 안의 Ok 가 구체 타입으로 풀립니다. Result<string, string> 을 기대한 자리에 Result<string, E> 라고 잘못 알리던 TPZ5001 이 사라졌습니다.
5.19.245내부ifconcurrent 의 제한 시간 else, 블록 식에서 블록을 실행할 때 분석된 블록을 복사하지 않고 재사용합니다. 평가 동작은 달라지지 않았습니다.
5.19.244내부문장 실행이 조건과 return·break 값, 식 문장, 바인딩 초기식까지 자식 식을 복사한 노드로 감싸지 않고 제자리에서 평가합니다. 평가 순서와 동작은 그대로입니다.
5.19.243내부실행 중인 블록이 남은 문장을 복사하는 대신 블록과 도달한 위치를 참조로 들고 있으며, 최상위 문장과 식도 제자리에서 평가합니다. 동작은 그대로입니다.
5.19.242내부어휘 스코프가 바인딩을 정렬된 트리 대신 이름으로 바로 찾는 표에 담습니다. 선언과 평가 순서는 프로그램 자체가 정하므로 안전하며, 자체 검사기가 자기 작업을 더 빨리 끝내고 동작은 그대로입니다.
5.19.241내부검사기가 함수에 선언된 결과 타입을 실제 return 검사에만 쓰고, 중첩된 NoneOk·Err 생성자, 표준 감싸기 호출, 생성된 리스펙스 호출은 검사 대상 식에서 기대 타입을 가져옵니다. 중첩 값이 함수 결과와 다를 때 나오던 거짓 진단이 사라졌습니다.
5.19.240내부기대 타입을 그것이 속한 식에 정확히 붙이고, 바깥 결과를 만드는 ifmatch 갈래, 블록 끝에만 전달합니다. 중첩된 제어 흐름과 중간 문장에서 나오던 거짓 타입 오류가 없어졌습니다.
5.19.239내부컴파일러를 품은 명령이 Rust Stage 0 빌드를 기본으로 쓰므로 낡은 내장 검사기가 일상적인 실행에서 거짓 진단을 내지 않습니다. 자체 컴파일러의 제네릭 Option 모호성을 고쳤고, 여러 값을 가진 enum 패턴의 각 값이 자기 타입을 지킵니다.
5.19.238내부리스펙스 동작이 인터프리터와 생성된 Rust, 생성된 Python 에서 일치합니다. 리더와 정규화기 진단, 묶이지 않은 이름의 조회 순서와 소스 범위, 단축 평가, 프로그램이 오류로 멈출 때 이미 쓴 출력이 모두 같아졌고 기능 매니페스트도 온전히 실었습니다.
5.19.237내부Python 백엔드가 sortsortBy 를 지나도 배열의 알려진 길이와 모든 원소가 공유하는 정보를 유지하고, retain 은 결과가 짧아질 수 있으므로 길이 정보를 놓습니다.
5.19.236내부pushpop, reverse, insert, removeAt, clear 같은 정적 배열 연산이 Python 백엔드가 각 슬롯과 배열 길이에 대해 아는 정보를 모두 갱신하고, 같은 저장소를 가리키는 별칭들을 함께 맞춥니다.
5.19.235내부Python 백엔드가 네임스페이스 컬렉션과 지역 컬렉션을 구분하고 가변 바인딩마다 고유한 신원을 주어, 한 별칭으로 바꾼 내용이 그 컬렉션을 공유하는 바인딩에만 반영되고 재대입은 깨끗하게 시작합니다.
5.19.234내부Python 백엔드가 있다고 아는 키와 값까지 다 아는 키를 구분해, 정해진 키에 대한 Map.update 가 콜백이 돌려준 값과 처음 값을 합쳐 정확히 풀립니다.
5.19.233내부Python 백엔드가 컬렉션 변경을 갱신과 제거, 무효화로 나누어 다루므로 정해진 키에 대한 Map.remove 가 그 키만 지우고 나머지 Map 에 대해 아는 정보는 남깁니다.
5.19.232내부정해진 키로 하는 Map.insert 가 무엇을 넣었는지 기록해, Python 백엔드가 값의 형태와 호출 형태, 감싸인 내용을 그 키의 이후 조회까지 가져갑니다.
5.19.231내부배열과 Map 의 변경이 Python 백엔드에서 하나의 경로를 지나므로, 어떤 바인딩으로 바꾸든 같은 컬렉션을 공유하는 다른 바인딩이 똑같은 방식으로 무효화됩니다.
5.19.230내부Python 백엔드가 Map 이 가진 키를 모두 알고 그 값들이 같은 종류일 때, 실행 중에 정해지는 키로 하는 조회도 그 공통 정보를 씁니다.
5.19.229내부실행 중에야 정해지는 키로 하는 Map.get 도 알려진 항목이 모두 같은 종류의 값을 가지면 Python 백엔드가 불변 Map 에 대해 알아낸 정보를 활용합니다.
5.19.228내부정해진 키로 만든 Map 이 Python 백엔드에서 각 값의 형태와 호출 방법, 감싼 내용까지 온전히 지니므로 Map.get 결과를 패턴으로 다룰 때 실제 정보를 씁니다.
5.19.227내부Python 백엔드가 OptionResult 의 내용을 고정된 두 칸 대신 경로로 나타내어, 얼마나 깊이 중첩되든 같은 방식으로 따라갑니다.
5.19.226내부ifmatch 의 모든 갈래가 같은 형태를 낼 때 Python 백엔드가 값의 형태와 호출 형태, 중첩된 Option 내용, 레코드 필드까지 알아낸 정보를 유지하며 선언보다 실제로 관찰한 쪽을 앞세웁니다.
5.19.225내부Option 이나 Result 안에 호출 가능한 값을 돌려주는 함수가 Python 백엔드에서 그 호출 형태를 유지하며, 선언된 폴백보다 본문이 실제로 돌려주는 쪽을 앞세웁니다.
5.19.224내부모듈 수준 값이 Python 백엔드 전체에서 자기 형태와 Option·Result 내용, 호출 형태를 지니므로 골라 쓰는 임포트나 네임스페이스 멤버 접근도 정의와 같은 정보를 봅니다.
5.19.223내부Some 이나 Ok 에서 값을 꺼내 묶을 때 그 값이 생성자에서 왔든 바인딩이나 반환, 패턴으로 다루는 배열에서 왔든 Python 백엔드가 같은 정보를 줍니다.
5.19.222내부Python 백엔드가 배열 슬롯마다 값의 형태와 Option 이 담은 내용을 기록하고, 모든 슬롯이 같으면 실행 중에 정해지는 인덱스나 패턴 조회에도 그 형태를 씁니다.
5.19.221내부Map 을 담은 배열이 Python 백엔드에서 리터럴과 스프레드, 별칭을 지나면서도 슬롯별 정보를 쌓으므로 정해진 인덱스를 읽을 때 Map 의 내용과 그 안의 레코드를 함께 봅니다.
5.19.220내부배열에 담긴 레코드가 Python 백엔드에서 필드 트리 전체를 지니므로, 레코드가 바로 놓였든 Option 이나 Result, Map 값 안에 있든 정해진 인덱스를 읽으면 중첩 필드까지 닿습니다.
5.19.219내부레코드 필드를 바꿀 때 Python 백엔드가 그 필드 아래에 대해 아는 내용을 한 번의 작업으로 지우고 다시 세우며, 레코드 갱신과 경로 대입이 같은 작업을 씁니다.
5.19.218내부배열 슬롯의 선언된 레코드 내용과 관찰된 내용이 Python 백엔드에서 한곳에 모여, 배열 원소의 필드를 읽을 때 한 번의 조회로 끝납니다.
5.19.217내부중첩 레코드 경로로 대입할 때 Python 백엔드가 쓰이는 필드 아래만 바꾸고 형제 필드와 다른 뿌리에 대해 아는 정보는 그대로 둡니다.
5.19.216내부레코드 전체를 필드에 대입하면 Python 백엔드가 값의 형태와 호출 형태, 콜백 대상까지 중첩된 내용을 통째로 함께 옮깁니다.
5.19.215내부레코드 생성과 갱신, 필드 대입이 Python 백엔드에서 필드 값이 무엇인지 하나의 공통 경로로 기록하므로 셋의 판단이 어긋나지 않습니다.
5.19.214내부레코드 리터럴과 레코드 갱신이 Python 백엔드에서 하나의 공통 단계로 필드 정보를 모으고 같은 경로 아래에 넣습니다.
5.19.213내부호출 가능한 값을 담은 이름 기반 레코드의 기본값을 Python 백엔드가 한곳에서 정리하므로 모듈 전체 분석과 레코드 갱신이 같은 기본값을 읽습니다.
5.19.212내부이름 기반 레코드를 갱신할 때 호출 가능한 기본값을 한 번만 확인하고 값을 두 번이 아니라 한 번만 훑으며, Python 백엔드가 기본값 표 전체를 복사하지 않습니다.
5.19.211내부Python 백엔드에서 레코드 필드를 읽을 때 값의 형태와 호출 형태, 콜백 대상을 세 갈래로 나누지 않고 하나의 공통 규칙으로 정합니다.
5.19.210내부Option 안에 든 레코드 필드도 Python 백엔드에서 같은 규칙을 따르며, 중첩 접근은 필드까지 이어지는 정본 경로 하나를 쌓습니다.
5.19.209내부Map 값이나 Option, Ok 를 거쳐 닿는 레코드를 그 값이 나온 바인딩과 네임스페이스, 반환, 생성자에서 바로 뽑으며 Python 백엔드가 표 전체를 복사하지 않습니다.
5.19.208내부Map.get 결과를 패턴으로 다룰 때 Map 과 키, 값의 형태, 호출 형태, 중첩 레코드를 Python 백엔드가 한곳에서 정합니다.
5.19.207내부Python 백엔드의 배열 인덱싱이 바인딩을 찾고 인덱스가 미리 정해진 값인지 판단하는 일을 하나의 공통 단계로 처리해 모든 슬롯 조회가 같은 길을 따릅니다.
5.19.206내부Python 백엔드가 배열 리터럴과 스프레드 값을 한 번만 훑어 콜백 대상과 알려진 길이, 호출 형태를 모으고 갈래 합치기도 같은 방식으로 처리합니다.
5.19.205내부Python 백엔드가 배열 원소에 대해 아는 것을 슬롯 형태와 Option 내용부터 콜백 대상, 호출 형태, 길이까지 하나의 구조에 모았습니다.
5.19.204내부Map 값이 Python 백엔드에서 지역 바인딩과 모듈 수준 값 모두 형태와 Option 내용, 호출 형태를 하나의 구조에 담으며 한 번의 해석으로 만들어집니다.
5.19.203내부협조적 콜백을 담은 중첩 레코드 필드가 필드 갱신과 분기 병합, 패턴 분해를 거쳐도 스케줄링 대상을 유지합니다. 세 경로가 모두 같은 조회를 씁니다.
5.19.202내부레코드 멤버의 수신자 모양과 호출 정보를 파서 쪽 트리와 검사기 쪽 트리에서 한 번에 모읍니다. 중복되던 걸러내기 단계를 없앴습니다.
5.19.201내부직접 필드 접근과 래퍼 경로가 중첩 레코드의 수신자 모양과 호출 서명을 같은 출처에서 읽습니다. 두 경로가 어떤 멤버 호출이 유효한지 같은 답을 냅니다.
5.19.200내부Result 로 감싼 레코드를 돌려주는 함수가 Python 백엔드에서 반환값의 중첩 멤버 정보를 유지합니다. unwrap() 뒤에 이어지는 호출이 올바른 메서드로 연결됩니다.
5.19.199내부Result 안에 레코드를 담은 Map 값이 중첩 멤버 정보를 함께 지닙니다. Map.get 뒤의 unwrap() 연쇄가 Python 백엔드에서 레코드 메서드에 닿습니다.
5.19.198내부Map 에서 꺼낸 값이 Option 안에 레코드를 담고 있어도 중첩 멤버 정보를 잃지 않습니다. Map.get 뒤의 옵셔널 체이닝이 Python 백엔드에서 레코드 메서드를 정확히 찾습니다.
5.19.197내부Map.get 에서 나온 패턴 바인딩이 담고 있는 레코드의 수신자 모양과 호출 서명을 알게 됩니다. 그 바인딩에 이어지는 중첩 멤버 호출이 Python 으로 올바르게 컴파일됩니다.
5.19.196내부지역 별칭을 거쳐 고정 키로 Map 을 조회할 때 올바른 수신자 모양을 돌려줍니다. OptionResult 안쪽 모양까지 Python 생성에 반영됩니다.
5.19.195내부Map 에 담긴 호출 가능 값의 선언된 호출 서명이 지역 별칭을 거쳐 Python 백엔드까지 이어집니다. Map.get 패턴으로 묶은 값을 호출할 때 선언대로 인자를 넘깁니다.
5.19.194내부배열에 담긴 호출 가능 값이 배열을 변경 가능으로 등록한 뒤에도, 이후 갱신을 거친 뒤에도 선언된 서명을 지킵니다. 동적 호출과 파이프 호출이 계속 올바르게 연결됩니다.
5.19.193내부Option 별칭을 거쳐 닿는 레코드가 호출 가능 필드의 서명과 기본값을 드러냅니다. 옵셔널 접근으로 그 필드를 호출할 때 선언된 기본값을 씁니다.
5.19.192내부Option 안 레코드로 선언한 바인딩이 변수를 다시 대입해도 선언된 수신자 모양을 지킵니다. 선언 정보가 추적 중인 값과 수명을 함께하지 않도록 분리했습니다.
5.19.191내부Option 으로 감싼 레코드를 담은 바인딩과 내보낸 모듈 값이 중첩 필드의 수신자 모양과 호출 서명을 함께 지닙니다. 옵셔널 체이닝이 그 정보를 따라 해석합니다.
5.19.190내부Option 으로 감싼 레코드를 돌려주는 함수가 반환값의 중첩 멤버 정보를 유지합니다. 호출 결과에 이어지는 옵셔널 체이닝이 Python 백엔드에서 해석됩니다.
5.19.189내부Python 생성에서 레코드 반환 정보와 레코드 필드 기본값을 계산하기 전에 가져온 모듈을 먼저 정돈합니다. 두 정보 모두 가져오기와 변경 사실이 등록된 뒤에 계산됩니다.
5.19.188내부레코드 필드 기본값을 레코드를 선언한 모듈에서 그대로 담아 둡니다. 비어 있는 기본값도 비어 있는 채로 남아, 레코드를 가져다 쓰는 모듈이 자기 네임스페이스에서 다시 해석하지 않습니다.
5.19.187내부이름 있는 레코드를 만들 때 호출 가능 필드의 서명을 선언된 필드 타입에서 먼저 채웁니다. 기본값 식이 있으면 매개변수 이름과 기본값, 협조적 대상을 그 위에 덮어씁니다.
5.19.186내부수신자 모양과 호출 서명이 중첩 레코드의 모든 단계까지 내려갑니다. 타입을 그 자리에 적었든 검사기가 풀어낸 타입 별칭에서 왔든 결과가 같습니다.
5.19.185내부구조적 레코드 반환 타입을 선언한 함수가 그 레코드 직속 필드의 수신자 모양과 호출 서명을 제공합니다. 값이 본문 마지막 식에서 나온 경우에도 같습니다.
5.19.184내부네임스페이스 가져오기를 거친 호출이 하나의 규칙으로 해석됩니다. 가져오기와 이를 가리는 지역 이름을 함께 따지므로, 서로 다른 답을 내던 여러 조회가 사라졌습니다.
5.19.183내부모듈의 모든 함수를 먼저 등록한 뒤 레코드 반환 정보를 계산합니다. 파일 아래쪽에 선언된 함수를 부르는 래퍼도 위쪽을 부르는 래퍼와 같은 정보를 받습니다.
5.19.182내부다른 함수의 결과를 그대로 넘기는 래퍼가 그 함수의 협조적 콜백 대상을 물려받습니다. 몇 겹을 거쳐 넘기더라도 대상이 남습니다.
5.19.181내부함수 반환 정보가 레코드 필드의 협조적 콜백 대상을 수신자 모양, 호출 서명과 나란히 기록합니다. 반환된 레코드에 이어지는 멤버 호출이 그 대상을 찾습니다.
5.19.180내부레코드를 갱신할 때 원본의 선언된 정보에서 출발합니다. 갱신에 적은 필드에 대해서만 서명과 협조적 대상, 중첩 정보를 바꿉니다.
5.19.179내부구조적 레코드 갱신이 원본의 수신자 모양을 복사한 뒤, 갱신이 지목한 필드와 그 하위 필드만 새 모양으로 바꿉니다.
5.19.178내부코드 생성과 동적 기본값 조회, 바인딩 정보가 이름 있는 레코드 생성의 기준을 같은 방식으로 풉니다. 선언에서 읽든 필드 값에서 읽든 수신자 모양이 일관됩니다.
5.19.177내부배열 원소의 선언된 모양과 중첩 Option 안쪽 모양을 흐름에서 모은 콜백 정보와 분리했습니다. 배열을 다시 대입해도 선언된 모양이 사라지지 않습니다.
5.19.176내부배열을 인덱싱해도 검사기가 확정한 원소 모양이 남습니다. 이름과 괄호 식, 인덱스 접근, 멤버 접근이 지역 별칭과 변경 호출, 즉시 호출 람다를 거쳐도 같은 뿌리로 풀립니다.
5.19.175내부defer 본문을 해당 블록이 끝난 뒤 등록의 역순으로 분석합니다. Python 백엔드가 미뤄진 변경과 재바인딩을 실제 실행 순서대로 봅니다.
5.19.174내부변경 추적이 &&||?? 같은 단축 평가 연산자, 그리고 옵셔널 수신자 호출에서 실행되는 쪽과 건너뛰는 쪽을 따로 분석합니다. 한쪽에서만 건드린 바깥 별칭도 빠짐없이 반영됩니다.
5.19.173내부forwhileloop 의 본문, 컴프리헨션, 타임아웃 else 를 포함한 concurrent 갈래가 변경된 뿌리 집합을 같은 규칙으로 넓혀 갑니다.
5.19.172내부지역 별칭이 닿을 수 있는 매개변수 뿌리 집합을 함께 지닙니다. ifmatch 의 갈래는 끝에서 집합을 합치고, 케이스 안에서 선언한 별칭은 바깥 별칭을 가립니다.
5.19.171내부변경 가능한 지역 배열을 선언 시점부터 재대입까지 뿌리로 추적합니다. 배열에 붙은 정보를 알맞은 시점에 버리고 다시 세웁니다.
5.19.170내부변경 가능한 지역 별칭을 쓰는 프로그램을 컴파일러가 실제로 도는 방식 그대로 Python 백엔드에 태웁니다. 진입 모듈과 그것이 가져오는 모듈을 함께 풀고 함께 검사합니다.
5.19.169내부검사기가 변경 가능한 지역 별칭을 그것이 유래한 불변 배열 매개변수까지 되짚고, 그 매개변수를 효과의 뿌리로 다룹니다. 소스에 적힌 타입을 함께 씁니다.
5.19.168내부변수에 담은 타입 있는 람다의 배열 매개변수를 람다 안에서 추적합니다. 직접 일으킨 변경도 래퍼를 거친 변경도 그 값을 호출할 때의 효과로 드러납니다.
5.19.167내부if 나 남김없는 match 가 서명이 맞는 호출 가능 값을 내놓을 때, 닿을 수 있는 어느 갈래에서든 변경하는 배열 매개변수를 모두 남깁니다. 모든 갈래에 공통된 것만 남기지 않습니다.
5.19.166내부내보낸 호출 가능 값이 어떤 배열 매개변수를 변경하는지 기록을 지킵니다. 선택 가져오기나 네임스페이스 호출로 그 값에 닿을 때 기록이 그대로 살아납니다.
5.19.165내부호출 가능 값을 담은 바인딩이 어떤 배열 매개변수를 변경하는지 함께 지닙니다. 불변 별칭을 등록하거나 갱신하거나 지울 때도 그 집합이 어긋나지 않습니다.
5.19.164내부지역 호출과 선택 가져오기, 네임스페이스 호출의 매개변수 변경 효과를 직접 요약에서 시작해 더 늘지 않을 때까지 넓혀 계산합니다. 래퍼가 몇 겹이든 같은 답에 이릅니다.
5.19.163내부함수마다 어떤 배열 매개변수를 변경하는지 직접 기록합니다. 변경하는 함수를 호출하면 넘긴 배열에 대한 낡은 정보를 호출 자리에서 바로 버립니다.
5.19.162내부타입 있는 람다의 매개변수를 바인딩으로 등록합니다. 별칭 사슬을 거쳐 즉시 호출 람다로 넘어간 변경 가능 배열은 호출이 끝나는 즉시 바깥 정보를 버립니다.
5.19.161내부즉시 호출 람다 안의 변경은 매개변수를 거친 것까지 둘러싼 식의 효과로 셉니다. 붙잡아 둔 바깥 값의 정보를 람다가 실행되는 즉시 버립니다.
5.19.160내부식 중간에서 일어나는 변경을 식을 문장으로 낮추는 단계에서 함께 셉니다. 같은 식의 뒷부분이 호출 뒤의 배열 상태를 그대로 읽습니다.
5.19.159내부concurrent 갈래와 타임아웃 else 가 바꾸는 바깥 값을 본문을 만들기 전에 모아 둡니다. 어느 갈래도 낡은 정보를 읽지 않고, 모두 같은 경계에서 함께 버립니다.
5.19.158내부값을 모으는 for 반복문과 컴프리헨션의 패턴과 절, 필터, 본문을 각자의 범위 안에서 만듭니다. 한 번도 돌지 않은 반복문이나 통과하지 못한 필터가 콜백 정보를 흘리지 않습니다.
5.19.157내부옵셔널 수신자에 대한 호출을 각자의 범위 안에서 만듭니다. 수신자가 비어 있으면 인자를 평가하지 않고 콜백 정보도 밖으로 새지 않습니다.
5.19.156내부if 와 단축 평가 연산자, 그리고 ?? 와 직접 매치의 갈래를 각자의 범위 안에서 만듭니다. 실행되지 않은 갈래가 콜백 대입을 남겨 뒤따르는 코드의 특수화를 흐리는 일이 없습니다.
5.19.155내부직접 매치의 빠른 가드가 패턴 바인딩과 Map.get 에서 가져온 값의 호출 정보를 해당 갈래의 범위에 등록합니다. 주변 문맥을 복사하지 않고 가볍게 들고 납니다.
5.19.154내부케이스 가드를 낮춰야 하는지를 주변 문맥까지 보고 판단합니다. 협조적 컴프리헨션이나 고차 함수가 든 가드가 문장 매치와 값 매치 모두에서 가드 경로를 타게 됩니다.
5.19.153내부협조적 반복문의 매 회차가 패턴 가드와 바인딩 직후, 본문 실행 전에 스케줄러 검사점에 닿습니다. 동시 작업 사이의 끼어들기 순서가 결정론적으로 유지됩니다.
5.19.152내부문장 for 반복문과 값을 모으는 for 반복문, 컴프리헨션이 항목 패턴을 하나의 공통 처리로 다룹니다. 같은 패턴 논리와 정보 갱신이 세 벌로 나뉘어 있지 않게 됐습니다.
5.19.151내부문장 for 반복문이 값을 모으는 반복문과 같은 순서를 따릅니다. 항목을 받고 패턴 가드를 거쳐 범위에 바인딩하므로, 두 형태의 구조 분해와 오류 처리가 같아집니다.
5.19.150내부문장 자리의 if 가 조건을 공통 식 경계를 거쳐 낮춥니다. 반복문이나 고차 함수가 든 조건도 Stage 0 과 똑같은 순서로 평가되고 같은 갈래로 갈립니다.
5.19.149내부배열 변경 분석이 변경을 품을 수 있는 문장 종류를 빠짐없이 열거합니다. 대입과 while 반복문, using 블록, 그리고 breakreturn 을 포함하며, 빠진 경우는 조용히 넘어가지 않고 빌드에서 걸립니다.
5.19.148내부문자열 보간과 파이프 왼쪽 식, 컴프리헨션의 절과 본문 안에서 일어나는 배열 변경까지 추적합니다. 그 뒤로 지역 바인딩과 모듈 수준 바인딩을 모두 정확하게 읽습니다.
5.19.147내부호출이 배열을 변경하는지 판정할 때 수신자를 감싼 괄호를 그대로 통과해 봅니다. 식을 다시 만들어 내지 않으므로 컴파일 작업이 줄어듭니다.
5.19.146내부이름 대입과 인덱스 대입, 레코드 필드 대입을 각각의 경로로 생성합니다. 경로마다 변경 가능 여부 검사와 피연산자 평가, 쓰기, 정보 갱신을 따로 다룹니다.
5.19.145내부모든 대입이 대상에 붙은 정보를 새로 고치는 하나의 마무리 단계를 거칩니다. 변경 가능한 배열과 레코드에 낡은 정보가 남지 않습니다.
5.19.144내부대입의 오른쪽 식을 쓰기 직전에, 그리고 대상을 다시 읽기 전에 끝까지 평가합니다. 자기 대상을 참조하는 대입도 올바른 값을 냅니다.
5.19.143내부단순 이름과 직접 인덱스, 레코드 경로에 대한 대입이 구성 요소를 같은 순서로 평가합니다. 대입 안에서 일어나는 효과의 순서를 예측할 수 있습니다.
5.19.142내부대입 왼쪽의 멤버 연쇄를 한 번만 훑어 뿌리 바인딩과 필드 경로를 함께 뽑아냅니다. 같은 곳을 여러 번 훑던 처리를 대신합니다.
5.19.141내부구조 분해 바인딩이 패턴 가드의 모든 결과를 하나의 마무리 단계로 모읍니다. 가드를 통과한 뒤 이름이 범위에 들어가는 방식이 한 가지로 통일됩니다.
5.19.140내부지역과 진입 모듈, 가져온 모듈의 최상위 바인딩을 하나의 공통 경로로 생성합니다. 세 갈래가 서로 다르게 만들어지며 어긋날 일이 없어집니다.
5.19.139내부복합 대입이 쓰기 전에, 그리고 대상을 다시 읽기 전에 오른쪽 식의 낮추기를 끝냅니다. 복합 갱신의 단계가 의도한 순서대로 적용됩니다.
5.19.138내부??= 는 대상에 이미 값이 있으면 오른쪽 식을 평가하지 않습니다. 대입이 일어나지 않을 때 그쪽의 어떤 동작도 실행되지 않습니다.
5.19.137내부레코드 필드에 대입할 때 기준 값과 필드 경로를 정해진 순서로 평가합니다. 깊이 중첩된 레코드를 고칠 때 동작이 일관됩니다.
5.19.136내부배열 인덱스 대입이 피연산자를 정해진 순서로 평가합니다. 인덱스나 값이 부수 효과를 지녀도 Stage 0 과 똑같이 동작합니다.
5.19.135내부Python 백엔드가 이름과 인덱스 위치, 레코드 필드 경로를 각각의 경로로 나누어 대입 대상을 분류합니다. 피연산자 계산과 대입 실행을 서로 떼어 놓았습니다.
5.19.134내부Python 백엔드의 구조 분해 바인딩이 이름이 유효해지는 시점과 패턴 조건 검사, 중복 선언 거부를 한 경로에서 처리합니다.
5.19.133내부단순 let 과 구조 분해 let 이 Python 백엔드에서 같은 보조 경로를 씁니다. 지역 스코프 등록과 전역 스코프 등록이 서로 어긋나지 않습니다.
5.19.132내부+= 같은 복합 산술 대입이 Python 백엔드에서 일반 연산자와 같은 산술 경로로 내려갑니다. 정수와 부동소수점, 문자열 피연산자의 정밀도와 평가 순서가 올바르게 유지됩니다.
5.19.131내부인덱스에서 시작해 필드나 인덱스로 이어지는 대입을 Python 백엔드가 가장 안쪽 단계부터 바깥으로 다시 구성합니다. 일반 대입과 복합 대입, 병합 대입이 Stage 0 의 평가 순서와 단축 평가를 그대로 따릅니다.
5.19.130내부중첩된 레코드 필드 대입을 Python 백엔드가 일반 필드 읽기와 레코드 갱신 단계를 써서 안쪽부터 바깥으로 다시 구성합니다. 일반 대입과 복합 대입, 병합 대입이 Stage 0 의 평가 순서를 따릅니다.
5.19.129내부인덱스에 대한 복합 대입이 Python 백엔드에서 변수나 레코드 필드와 똑같은 산술 단계를 씁니다. 정수와 부동소수점, 문자열 덧셈이 Stage 0 과 같게 동작합니다.
5.19.128내부인덱스에 대한 복합 대입이 Python 백엔드에서 오른쪽 식을 계산하기 전에 그 자리의 현재 값을 먼저 읽습니다. 오른쪽 식이 같은 자리를 바꾸는 프로그램도 Stage 0 과 같은 결과를 냅니다.
5.19.127내부구조 분해 let 이 지역 스코프와 진입 모듈, 가져온 모듈에서 하나의 규칙을 따릅니다. 값 계산과 패턴 조건, TPZ5001 타입 검사, 중복 바인딩 거부가 모두 같아졌습니다.
5.19.126내부중첩된 지역 불변 타입 let 이 값을 먼저 계산하고 이름을 묶기 전에 타입을 검사합니다. 타입이 맞지 않으면 Stage 0 과 같은 TPZ5001 오류가 납니다.
5.19.125내부진입 모듈과 가져온 모듈에서 최상위 const 와 단순 let 이 같은 방식으로 생성됩니다. 불변 타입 바인딩은 실행 중에 타입을 검사하고 Stage 0 과 똑같이 TPZ5001 오류를 냅니다.
5.19.124내부외부 모듈과 일반 가져오기 모듈이 Python 백엔드에서 내보내기와 초기화 함수 이름을 같은 형태로 돌려줍니다. 두 종류를 한 경로에서 모읍니다.
5.19.123내부일반 가져오기 모듈의 코드 생성을 한 곳에서 이끕니다. 입력 준비와 본문 생성, 네임스페이스 구성, 초기화 함수 작성이 같은 자리에서 이어집니다.
5.19.122내부일반 가져오기 모듈의 본문을 전담 단계 하나가 소스 순서대로 생성합니다. 내보내기와 진단, 기본값 보조 코드도 같은 단계에서 배치합니다.
5.19.121내부일반 가져오기 모듈의 준비 과정을 명시적인 단계로 분리했습니다. 컨텍스트와 기본값, 프로토콜과 수신자와 함수 등록, 초기화 시작 항목, 가져오기 바인딩을 코드 생성 전에 확정합니다.
5.19.120내부외부 가져오기 모듈의 코드 생성을 경계 하나가 전담합니다. 함수 자리와 네임스페이스, 초기화 함수, 내보낸 결과를 한곳에서 관리합니다.
5.19.119내부모듈을 분석하는 동안 내보낸 문장을 소스 순서대로 보관합니다. 외부 모듈의 내보내기를 준비할 때 비공개 문장을 훑지 않습니다.
5.19.118내부분석 과정이 최상위 가져오기 선언을 소스 순서대로 보관합니다. 가져온 모듈의 바인딩 준비가 소스를 다시 뒤지지 않고 그 목록을 바로 읽습니다.
5.19.117내부최상위 함수 선언을 모듈 분석 중에 소스 순서대로 보관합니다. 함수 등록과 반환 타입 정보가 그 공유 기록만 읽습니다.
5.19.116내부프로토콜 이름과 수신자 구현을 모듈 분석 중에 소스 순서대로 보관합니다. 등록과 준비 과정에서 소스를 세 번 다시 훑던 작업이 사라졌습니다.
5.19.115내부최상위 constlet 이름을 한 번에 순서대로 모읍니다. 수신자 메서드 표를 소스를 다시 훑지 않고 그 목록에서 만듭니다.
5.19.114내부모듈 수준 이름 개수와 문장별 바인딩을 레코드 기본값 스코프용으로 한 번에 모읍니다. 같은 패턴을 두 번 분해하지 않습니다.
5.19.113내부가져온 모듈에서 내보낸 불변 let 의 기본값을 이미 모아 둔 사실에서 바로 구합니다. 구문 트리를 다시 훑거나 항목을 하나씩 찾지 않습니다.
5.19.112내부문장별 런타임 이름과 가변 let 이름을 소스 순서대로 저장합니다. 스코프를 오갈 때 구문 트리의 패턴을 다시 살피지 않습니다.
5.19.111내부모듈을 이미 읽는 과정에서 최상위 함수와 const, let 의 개수를 함께 셉니다. 보조 스코프를 위해 따로 돌던 예비 과정이 사라졌습니다.
5.19.110내부문장에 들어가고 나올 때 어떤 이름이 살아 있는지를 레코드 기본값 스코프가 직접 판단합니다. 레코드와 뉴타입, 열거형, 별칭 구성은 각각 독립된 단계로 나눴습니다.
5.19.109내부레코드와 뉴타입, 열거형, JSON 스키마 별칭, 가져오기 스코프, 수신자 구현을 모듈을 한 번 훑는 동안 소스 순서대로 모읍니다.
5.19.108내부레코드 기본값 보조 스코프가 런타임 바인딩 개수를 한 번만 세고 앞서 나온 가변 이름을 진행하면서 모읍니다. 전체가 두 번의 선형 과정으로 정리됐습니다.
5.19.107내부JSON 스키마 타입 별칭과 가져오기 스코프를 이름 있는 타입 정의와 함께 한 번에 모읍니다. 목록이 완성된 뒤 구문 트리를 다시 읽지 않습니다.
5.19.106내부목록에 담긴 레코드와 뉴타입, 열거형을 복사 없이 공유하고 가져온 기본값을 넣을 때만 사본을 만듭니다.
5.19.105내부선언과 수신자 메서드 정보를 목록을 만들 때 레코드와 뉴타입, 열거형에 한 번 붙입니다. 목록을 쓰는 쪽마다 같은 작업을 되풀이하지 않습니다.
5.19.104내부모듈마다 레코드와 뉴타입, 열거형의 기본 표를 한 번만 만듭니다. 진입 모듈과 스키마 생성이 같은 표에서 갈라져 나옵니다.
5.19.103내부필요한 곳이 모두 함께 쓰도록 레코드 필드와 기본값, 보조 항목을 모듈마다 한 번만 구성합니다.
5.19.102내부레코드 기본값이 쓸 네임스페이스 구성원 후보를 레코드별로 한 번에 모으고 목록이 완성된 뒤에 대조합니다. 구문 트리를 다시 읽지 않습니다.
5.19.101내부앞서 나온 불변 let 바인딩과 레코드별 런타임 기본값 참조를 한 번의 입력 과정에서 계산합니다. 진입 모듈과 스키마, 클래스 생성이 이 결과를 함께 씁니다.
5.19.100내부자체 const 와 내보낸 const 값을 한 번의 과정에서 소스 순서대로 계산합니다. 다른 모듈을 조회할 때는 그 모듈의 공유 목록을 바로 읽습니다.
5.19.99내부기본 가져오기 바인딩과 런타임 기본값 이름을 모듈을 한 번 훑는 동안 함께 모읍니다. 목록을 따로 두 번 만들고 소스를 다시 읽던 과정이 없어졌습니다.
5.19.98내부최상위 불변 let 이름과 내보낸 constlet 이름을 한 번의 순회로 계산합니다. 런타임 기본값 분석과 숨은 참조 분석이 같은 결과를 읽습니다.
5.19.97내부가져오기 항목과 지역 이름, 조회 색인을 컴파일 단위마다 한 번 구합니다. 소스 순서를 유지한 이 목록을 여러 분석이 함께 씁니다.
5.19.96내부선택해 가져온 const 의 기본값을 모을 때 공유된 유일 바인딩 검사를 씁니다. 최상위 이름이 몇 번 묶일 수 있는지를 하나의 규칙이 정합니다.
5.19.95내부최상위 이름이 몇 번 묶이는지를 모듈마다 한 번 셉니다. 가져오기 처리와 숨은 참조 분석이 같은 집계를 읽습니다.
5.19.94내부내보낸 const 이름과 단일 바인딩 let 이름의 집합을 모듈마다 한 번 계산합니다. 이 때문에 소스를 다시 훑는 일이 없어졌습니다.
5.19.93내부런타임까지 남는 최상위 불변 let 이름을 모듈마다 한 번 계산합니다. 숨은 참조 분석과 런타임 기본값 분석이 이 공유 집합 하나를 조회합니다.
5.19.92내부가져온 모듈의 숨은 런타임 참조를 기존 이름 표 위에 겹친 뷰로 따라갑니다. 표를 임시로 복사하지 않습니다.
5.19.91내부레코드마다 기본값이 참조하는 런타임 항목을 모듈당 한 번 계산하고 정의와 스키마, 클래스 생성이 그 결과를 함께 씁니다.
5.19.90내부레코드 기본값에 필요한 최상위 const 와 내보낸 const 값을 모듈마다 한 번 계산하고 이후의 모든 단계가 복사 없이 함께 씁니다.
5.19.89내부가져온 const 와 자체 const 를 레코드 기본값용 단일 순서 목록으로 합칩니다. 지역 정의와 내보내기 생성이 이 목록을 바로 읽습니다.
5.19.88내부concurrent 블록 안의 차단 이름 집합과 파이프 자리표시자를 복사하지 않고 공유합니다. 분기에 들어갈 때 그 모음을 통째로 베끼지 않습니다.
5.19.87내부Python 백엔드가 어휘 스코프마다 표를 하나씩 두고 그 스코프가 실제로 바뀔 때만 사본을 만듭니다. 미리 전체를 통째로 복사하지 않습니다.
5.19.86내부해석된 모듈 이름을 Python 백엔드가 소스와 스키마 식별에 그대로 씁니다. 컨텍스트를 복사할 때마다 이름을 다시 만들지 않습니다.
5.19.85내부함수와 메서드, 프로토콜, 네임스페이스 디스패치 표를 Python 백엔드가 공유하고 바뀔 때만 사본을 만듭니다. 분기에 들어가는 비용이 줄었습니다.
5.19.84내부Python 백엔드의 수신자와 프로토콜 임시 컨텍스트가 호출한 쪽의 모듈 식별과 공유 타입 표를 그대로 씁니다. 분기 복사가 가벼운 참조 복사로 끝납니다.
5.19.83내부가져온 모듈의 수신자 메서드 값 이름 표를 복사하지 않고 공유합니다. 모듈을 준비하고 메서드를 생성하는 동안 표 전체를 베끼지 않습니다.
5.19.82내부Python 백엔드의 진입 모듈과 외부 모듈, 가져오기 모듈 컨텍스트가 검사기가 가진 모듈 별칭 표를 바로 읽습니다. 컨텍스트를 만들 때 표를 통째로 복사하지 않습니다.
5.19.81내부레코드 정의 표를 Python 코드 생성 컨텍스트로 한 번만 옮깁니다. 기본값 보조 작업 목록은 기존 이름과 소스 식을 그대로 참조해 트리 전체를 복사하지 않습니다.
5.19.80내부제네릭 특수화 조회를 네이티브 경로에서 색인 하나로 통일했습니다. 특수화마다 만들어지는 Rust 이름을 기억해 두고 다시 만들지 않습니다.
5.19.79내부제네릭 특수화의 Rust 이름을 만들 때 타입 인자를 복사하거나 이어 붙이기용 임시 목록을 만들지 않습니다.
5.19.78내부네이티브 함수의 매개변수 이름을 소스에서 바로 가져와 공유합니다. 제네릭 특수화마다 이름 목록을 복사하지 않습니다.
5.19.77내부제네릭 타입 매개변수와 이름 붙인 호출 인자를 소스와 선언에서 바로 해석합니다. 임시 이름 목록을 다시 만들지 않습니다.
5.19.76내부제네릭 특수화 조회가 중첩 색인을 통해 이름과 타입 인자를 있는 자리에서 읽습니다. 조회마다 키 문자열이나 목록을 만들지 않습니다.
5.19.75내부일반 함수와 제네릭 함수의 시그니처를 한 번만 보관하고 공유합니다. 함수 본문이나 호출 지점을 생성할 때 시그니처 전체를 복사하지 않습니다.
5.19.74내부완전 네이티브 빌드는 활성 함수 표를 직접 갖고 하이브리드 빌드는 하나를 공유합니다. 함수마다 표를 복사하던 과정이 사라졌습니다.
5.19.73내부하이브리드 함수가 모듈별로 미리 계산해 둔 정보를 그대로 읽습니다. 함수마다 모듈 기록을 다시 걸러내고 복사하지 않습니다.
5.19.72내부타입이 붙은 지역 변수 색인 하나를 모든 컨텍스트가 공유합니다. 하이브리드 함수마다 색인 전체를 복사하지 않습니다.
5.19.71내부네이티브 경로에서 타입이 붙은 지역 변수를 조회할 때 소스를 가리키는 색인 하나에서 이름을 있는 자리에서 읽습니다. 조회마다 문자열을 만들지 않습니다.
5.19.70내부하이브리드 컴파일 대상이 확정되는 마지막 과정의 결과가 빌드 계획으로 바로 넘어갑니다. 살아남은 후보를 두 번 생성하지 않습니다.
5.19.69내부하이브리드 후보를 한 번의 과정에서 소스 위치 순으로 모듈별 표에 모읍니다. 전체 후보 목록을 모듈마다 다시 걸러내고 복사하지 않습니다.
5.19.68내부함수별 하이브리드 빌드 판정을 모듈과 소스 위치로 찾는 색인 하나에 기록합니다. 판정을 보고할 때 구문 트리를 다시 훑거나 모듈 키를 새로 만들지 않습니다.
5.19.67내부Rust 백엔드가 코드 생성에 쓰는 계획 그대로에서 선택 보고를 만들고, 그 계획을 코드 생성기에 한 번만 넘겨 전체 복사를 없앴습니다.
5.19.66내부Rust 백엔드의 클로저 계획을 모듈과 함수, 구간 단계로 나누어 보관합니다. 선택과 코드 생성이 조회마다 문자열 키를 만들지 않고 계획을 바로 찾습니다.
5.19.65내부JSON IR 판독기가 이미 파싱된 문서의 문자열 위에 연산 색인을 만듭니다. 필요한 연산 식별자는 완성된 프로그램에 그대로 남고 조회마다 문자열을 복사하지 않습니다.
5.19.64내부JSON 과 컴팩트 IR 연산의 최소 피연산자 구조를 디코딩하는 즉시 검사하고 색인 참조도 그 자리에서 대조합니다. 잘못된 프로그램은 조립 후 재검사가 아니라 읽는 도중에 거부됩니다.
5.19.63내부프로그램이 호스트 기능을 필요로 하는지를 IR 을 디코딩하는 동안 한 번에 정합니다. 내장 호출의 확정된 식별자를 쓰므로 연산을 다시 훑지 않고, 내장과 이름이 같은 사용자 메서드를 내장으로 오인하지 않습니다.
5.19.62내부호스트 기능을 쓰는 타깃 실행이 IR 페이로드를 한 번만 파싱하고, 디코딩된 그 프로그램 하나를 호스트 효과 처리와 실행이 함께 씁니다.
5.19.61내부호스트 없이 도는 타깃 제품과 표준 내보내기가 범위가 정해진 작업 스레드를 씁니다. IR 페이로드와 인자, 표준 입력, 어댑터 정보를 복사본이 아니라 호출자에게서 그대로 읽습니다.
5.19.60내부Stage 1 과 Stage 2 컴파일러 런타임이 범위가 정해진 스레드에서 돌며 요청 바이트를 제자리에서 읽습니다. 사실 교환 회차마다 요청 전체를 복사하지 않습니다.
5.19.59내부Stage 2 컴파일러의 사실 교환 회차가 캐시된 준비 프로그램을 제자리에서 읽고 프로그램 핸들만 복사합니다. 감싸는 식별자를 매번 다시 만들지 않습니다.
5.19.58내부자체 컴파일 산출물이 만들어진 뒤로는 바뀌지 않고 읽기 전용 통로로만 열립니다. 읽는 쪽마다 같은 필드를 다시 해싱하지 않고 원본 응답 바이트도 붙들지 않습니다.
5.19.57내부자체 컴파일 산출물이 언어 모드를 자체 문자열로 들고 있지 않습니다. 호출 식별자와 제품 매니페스트는 로워링 요청에서 언어 버전을 공용 경로 하나로 가져옵니다.
5.19.56내부자체 컴파일 산출물마다 들고 있던 스키마 필드를 없앴습니다. 인코더가 표준 스키마 상수를 직접 적고, 들어오는 값 검사는 그대로 유지합니다.
5.19.55내부셀프호스트 컴파일러는 타깃 컴파일러로 폴백하지 않으므로 자체 컴파일 산출물에서 쓰이지 않던 폴백 필드를 없앴습니다. 매니페스트와 출처 기록에는 폴백 정책을 명시 상수로 그대로 적습니다.
5.19.54내부상태와 사실 교환 회차 수를 자체 컴파일 산출물 안 한 곳에만 저장하고, 매니페스트와 다른 읽는 쪽은 같은 통로로 그 값을 가져옵니다.
5.19.53내부생성된 Rust 를 자체 컴파일 산출물 안 한 곳에만 두고 참조로 넘깁니다. 사본끼리 서로 같은지 확인하던 중복 검사도 사라졌습니다.
5.19.52내부자체 컴파일 산출물 맨 위에 중복으로 있던 프런트엔드 JSON 사본을 없앴습니다. 저장 위치는 한 곳으로 정해 그곳만 정본으로 삼습니다.
5.19.51내부타입이 붙은 결과가 이미 파싱해 둔 프런트엔드 문서를 그대로 씁니다. 명령줄 컴파일러 미리보기와 셀프호스트 제품 조립이 프런트엔드 JSON 을 두 번 파싱하지 않습니다.
5.19.50내부검증된 Stage 1 응답과 프런트엔드 문서를 완성된 결과에 그대로 남깁니다. 로워링과 제품 조립이 직렬화된 JSON 을 다시 파싱하지 않고 그것을 재사용합니다.
5.19.49내부토큰과 이름 해석, 타입 산출물, Stage 1 제어 경로가 프런트엔드 응답을 같은 필드 목록과 같은 JSON 및 스키마 판독기로 읽습니다. 바이트 입력의 UTF-8 검사도 어디서나 동일합니다.
5.19.48내부타입 산출물이 Stage 1 응답을 로워링 경로와 생성 경로가 쓰는 판독기로 똑같이 읽습니다. UTF-8 과 JSON, 최상위 필드, 교환 스키마 검사가 한 벌로 묶였습니다.
5.19.47내부컴파일러를 구동하는 모든 경로가 사실 교환 회차를 같은 방식으로 진행합니다. 질의 순서와 빈 회차, 마운트, 이미 답한 질의, 사실 공급이 한 규칙을 따릅니다.
5.19.46내부Stage 2 는 고정점 기록을 다시 인코딩하는 방식을 관측 기록의 정본으로 유지합니다. 공개 Stage 1 사실 공급은 공용 응답 문서와 공통 회차 진행을 써서 페이로드를 복사하지 않습니다.
5.19.45내부생성된 컴파일러 이미지를 받아들일 때 스키마와 고정점 상태, 폴백 정책, 생산 계보를 함께 확인합니다. 부트스트랩 컴파일러가 만든 것인지 Stage 1 이 만든 것인지가 기록에 남습니다.
5.19.44내부생성된 두 컴파일러의 매니페스트 바이트와 라벨, 프로그램 이미지를 목록 하나로 모아 단계마다 같은 방식으로 자산을 다룹니다.
5.19.43내부생성된 두 컴파일러 매니페스트의 스키마와 수치, 다이제스트 해석을 타입이 붙은 컴파일러 이미지 기술자 하나로 합쳤습니다.
5.19.42내부Stage 1 과 Stage 2 제품 인코더가 생산자를 같은 규칙으로 받아들이고, 컴파일러 파일 목록과 런타임 템플릿, 타깃 소스 필드를 만드는 방식을 함께 씁니다.
5.19.41내부셀프호스트 프런트엔드에서 런타임 템플릿 이름과 다이제스트를 한 곳에서 정합니다. 인코더는 호출자가 건네주는 다이제스트를 더 받지 않습니다.
5.19.40내부Stage 2 제품 매니페스트와 관측을 검증된 산출물에서 곧바로 만듭니다. 언어 버전과 생성된 Rust 를 제자리에서 읽으므로 중간 결과를 다시 조립하지 않고 프런트엔드 JSON 과 응답, 소스를 복사하지 않습니다.
5.19.39내부호스트가 있든 없든 셀프호스트 타깃 런타임이 승인된 산출물과 IR 페이로드, 어댑터 정보를 런타임 입력 하나로 받습니다. 아무도 쓰지 않던 별도 IR 진입점은 없앴습니다.
5.19.38내부셀프호스트 Rust 파사드가 명시적 main 과 호스트에서 부를 수 있는 내보내기 목록을 이미 가진 진입 모듈 정보에서 바로 받습니다. 같은 목록을 다시 만들려고 로워링된 프로그램을 훑지 않습니다.
5.19.37내부셀프호스트 Web 과 서비스 경로에서 어댑터 정보를 한 번만 만들어 진입 내보내기와 Rust 파사드가 함께 씁니다. Python 타깃은 그 정보와 IR JSON 을 런타임 입력 하나로 받습니다.
5.19.36내부승인된 자체 컴파일 산출물의 구조와 출처, 완료 상태를 한 곳에서 검사합니다. 타깃 어댑터와 런타임 페이로드가 그 검사를 함께 씁니다.
5.19.35내부자체 컴파일 산출물의 구조와 출처 검증을 매니페스트 인코딩에서 떼어냈습니다. 실행과 관측이 곧 버릴 매니페스트를 만들지 않고, 인코더가 자기 출력을 다시 파싱하지도 않습니다.
5.19.34내부타입과 로워링, 생성 단계의 상태와 진단, 출력 일치를 검사 하나로 확인합니다. 언어 모드와 타깃 소스 집합, 호출과 결과 식별자는 명시적인 기록 하나에서 끌어옵니다.
5.19.33내부타깃 소스 집합의 식별자를 필드를 표준 순서로 읽어 바로 계산하며 중간 문자열 배열을 만들지 않습니다. 모듈 순서와 소스 내용, 중복 식별자, 진입점 하나 규칙은 소스를 만드는 자리에서 검사합니다.
5.19.32내부최종 생성 응답을 읽는 일을 전용 입력 기록과 전용 절차로 분리했습니다. 완료 상태와 미지원 목록, 생성된 Rust 예산, 출처, 결과 조립이 여기에 모입니다.
5.19.31내부생성 응답이 로워링 결과로 한 번에 바로 디코딩됩니다. 결과를 만드는 일이 사실 교환 회차 진행과 얽혀 있지 않아 요청을 다시 인코딩하거나 가짜 호출을 만들거나 응답을 복사하지 않습니다.
5.19.30내부Stage 1 의 로워링 경로와 생성 경로가 같은 응답 필드와 같은 UTF-8, JSON, 객체, 스키마 해석, 같은 상태와 질의 봉투를 씁니다. JSON 객체는 참조로 넘겨 큰 배열을 복사하지 않습니다.
5.19.29내부Stage 0 로워링 경로와 생성된 Stage 1 경로가 사실 요청을 같은 상태 전이로 처리합니다. 빈 질의와 순서가 어긋난 질의, 중복 질의, 이미 답한 질의를 같은 규칙으로 다루고 출처도 같은 곳에서 기록합니다.
5.19.28내부Stage 0 안의 Stage 1 교환 판독기를 모듈과 연산 및 문자열 배열, 미지원 목록과 상태 일치, 출처와 소스 집합 식별자를 각각 맡는 부분으로 나눴습니다.
5.19.27내부셀프호스트 Stage 1 교환에서 쓰이지 않던 공개 레코드를 없앴습니다. 중첩된 출처 필드에 필요한 타입 가져오기는 그대로 남겼습니다.
5.19.26내부셀프호스트 코드 생성기의 닫힌 정수 미리보기가 배열과 색인 맵을 따로 두지 않고 식별자에서 연산으로 가는 맵 하나만 씁니다. 선택 규칙과 미리보기 결과는 그대로입니다.
5.19.25내부생성된 런타임에서 스프레드 호출과 이름 인자 호출이 펼친 값을 배열로 한 번만 풀고 클로저 호출과 합성 호출, 호출할 수 없는 분기에 같은 값을 넘깁니다. 기본값 매개변수를 채우지 못하면 표준 인자 개수 오류를 돌려주고, 인터프리터의 수신자 검사도 하나의 분류를 따릅니다.
5.19.24내부생성된 Rust 에서 값으로 쓰이는 내장 함수가 공용 인자 형태를 그대로 받습니다. 중복된 인자 개수 사전 검사와 감싸는 층이 사라졌고, ByteBuffer 와 Zstd 의 선택 인자는 형태별로 변환되며 어긋나면 구조화된 런타임 오류를 돌려줍니다.
5.19.23내부인터프리터와 생성된 런타임이 인자 변환을 한 벌로 함께 씁니다. 고차 내장 함수와 네임스페이스 내장 함수가 인자 0개에서 3개를 바로 받고, ByteBuffer 와 Zstd 의 선택 인자는 형태별로 변환되며 기본값이 없으면 구조화된 런타임 오류를 돌려줍니다.
5.19.22내부내장 멤버 호출과 호스트 자원 메서드 호출이 인자 0개에서 4개를 호출 순서대로 받아 개수 검사와 소유권 이전을 한 번에 처리합니다. Decimalrounddiv 는 선택 인자를 지원되는 형태마다 변환하므로 디스패치에 프로그램이 멎는 지점이 남지 않습니다.
5.19.21내부Test 와 리스펙스 호출이 인자 개수 검사와 소유권 이전을 한 번에 처리하고, Stage 1 콜백과 ISO 날짜 파싱의 인자 개수 오류 보고가 더 정확해졌습니다. Rust 백엔드와 Python 백엔드는 진입 모듈 값과 수신자·프로토콜 메서드, 조회에서 일치합니다.
5.19.20내부Unicode 식별자 표를 타입이 붙은 범위 레코드로 생성해, 어떤 문자가 식별자에 쓰일 수 있는지 찾는 검색이 타입 검사를 받습니다. 입력 끝 표시는 더 이상 1바이트 문자 후보로 세지 않습니다.
5.19.19내부셀프호스트 렉서가 오류 복구 중에 끼워 넣는 닫는 토큰에 합성 표시를 붙이고 그 출처를 레이아웃 흐름 끝까지 유지합니다. 레이아웃 상태는 길이가 보장된 자리에서 폴백으로 실수를 가리지 않고 곧바로 색인합니다.
5.19.18내부한 줄 문자열 보간 안에 중첩된 삼중 따옴표 문자열이 줄바꿈 규칙을 피해 가던 문제를 고쳤습니다. 두 렉서 모두 첫 줄바꿈에서 중첩된 문자열과 보간을 닫고 바깥 문자열이 시작한 자리에 TPZ0003 을 보고합니다.
5.19.17내부5.20 모듈 표면에서 내보낸 값과 레코드, 열거형, 뉴타입이 이름 형태 전체를 표준 식별자로 함께 지닙니다. 선택 가져오기와 네임스페이스 가져오기는 그 정보로 멤버를 검사하므로 선택하지 않은 이름이 스코프에 새어 들어오지 않습니다.
5.19.16내부내장 함수를 값으로 호출할 때 인자 개수를 표 하나로 검사하므로 정확한 개수 호출과 선택 인자 호출, 가변 인자 호출이 같은 오류를 보고합니다. 생성된 Rust 에서 아직 설정되지 않은 최상위 내보내기를 읽으면 대체 값이 아니라 표준 미바인딩 오류가 나옵니다.
5.19.15내부두 컴파일러가 이름 해석으로 확정한 식별자를 우선하므로 TestFS 의 멤버와 이름이 같은 사용자 레코드와 함수가 내장 네임스페이스 규칙에 걸리지 않습니다. astresolved, typed 가 아닌 미리보기 대상과 허용되지 않은 언어 모드는 소스를 읽기 전에 거부합니다.
5.19.14내부5.20 프로파일의 이름 있는 레코드와 열거형, 뉴타입이 공개 이름과 선언 식별자, 수신자 메서드 식별자를 서로 구분해 유지하며 생성과 동등 비교, 순서 비교, 패턴, 타입 가드에서 같게 동작합니다. 타입 JSON 스키마는 별칭을 선언한 모듈 안에서 풀어 가져온 타입이 어느 백엔드에서나 같게 평가됩니다.
5.19.13내부언어 버전과 키워드가 각각 선언 하나에서 나오며 순서와 표기, 정확한 파싱까지 그 선언이 만들어 냅니다. 코퍼스 선택기는 그 파서와 5.7 상한을 명시해 씁니다. topaz run 은 동결된 5.1 단일 파일 경로와 5.2 이상 모듈 경로의 의미 경계를 그대로 지킵니다.
5.19.12내부공개 소스 스냅샷이 커밋 하나의 트리를 제외 없이 그대로 재현하고, 커밋과 트리, 블롭 식별자, 실행 권한, 바이트 길이, SHA-256 다이제스트를 페이로드 밖 매니페스트에 기록합니다. 최상위 LICENSENOTICE, THIRD-PARTY-NOTICES.md 도 함께 확인합니다.
5.19.11내부토파즈를 Apache-2.0 으로 공개하며 저장소 최상위에 LICENSENOTICE 를 두었습니다. 토파즈가 소유한 Cargo 패키지 40개와 Node 패키지 4개가 이 라이선스를 선언하고, 함께 넣은 Rust 패키지 165개의 라이선스는 별도 목록에 담았으며, 작업 트리의 모든 경로를 분류했습니다.
5.19.10내부편집기 멤버 자동완성이 JSON 네임스페이스의 stringifyparseAs, decode, parse 를 보여 줍니다. 예전 목록에는 빠져 있던 항목입니다. 두 검사기가 같은 내장 네임스페이스 목록을 읽어 호출 가능한 정적 멤버와 RoundingMode 값을 같은 진단으로 받아들입니다.
5.19.9내부호출 가능한 이름의 별칭이 제네릭 인자 개수와 매개변수 이름, 기본값을 그대로 따릅니다. 두 컴파일러가 정수 나눗셈과 나머지, 부호 반전, 산술 넘침, 최상위 초기화 순서를 같은 진단으로 보고하며, 즉시 실행되는 문장은 나중에 생기는 바인딩을 거부합니다.
5.19.8내부두 컴파일러가 반환 타입을 생략한 함수와 람다의 타입 추론에서 일치합니다. ResultOption, 빈 배열 결합, 재귀가 여기에 들어가며 제네릭 호출 결합과 using File 초기화, 일반 대입과 ??= 대입, 산술 대입, ifmatch 안의 기대 타입도 같습니다.
5.19.7내부두 컴파일러가 함수와 람다, 컴프리헨션 경계를 넘는 라벨 반복 제어와 값을 내는 반복 제어에서 일치합니다. 와일드카드와 바인딩, 리터럴, 타입, 생성자, 리스트, 레코드, or 패턴의 포괄 검사와 불가능한 패턴 진단, 닫힌 영역 match 완전성 검사도 같습니다.
5.19.6내부리스펙스 인터프리터가 205개 능력 행 전부를 소스 직접 실행과 생성된 Rust, 생성된 Python, Web, 설치된 토파즈 제품에서 지원합니다. 같은 프로그램이 다섯 경로 모두에서 상태와 표준 출력 바이트, 진단, 경고, 종료 상태, 값, 자원 결과까지 일치합니다.
5.19.5내부리스펙스의 고차 절차 all?any?, filter, fold-left, fold-right, for-each, map, reduce, string-for-each, string-map, vector-for-each, vector-map 을 완성해 인터프리터가 205개 능력 행을 모두 지원하고 미지원 행이 없습니다.
5.19.4내부리스펙스의 문자와 문자열, 출력 능력 36개를 완성해 지원이 205개 행 가운데 157개에서 193개로 늘었습니다. 문자열 전체 대소문자 변환이 그리스어 끝소문자 시그마와 길이가 바뀌는 대응을 처리하고 displaywrite, newline, println 출력이 올바른 순서로 섞입니다.
5.19.3내부리스펙스의 리스트와 검색 능력 39개를 완성했습니다. 합성 c...r 접근자 28개와 assoc, assq, assv, list-copy, list-first, list-ref, list-rest, list-tail, make-list, memv, nth 를 더해 지원이 205개 행 가운데 118개에서 157개로 늘었습니다.
5.19.2내부리스펙스의 수치 능력 34개를 완성했습니다. 정수 나눗셈 계열과 정확수·부정확수 변환, 반올림, gcdlcm, 거듭제곱, 정확한 정수 제곱근, 수치 술어가 들어가며 지원이 205개 행 가운데 84개에서 118개로 늘었습니다.
5.19.1내부셀프호스트 프런트엔드의 이름 해석과 Unicode 식별자, 문맥 타입 결정, 캡처, 진단 정확성을 고쳤습니다. Stage 2 와 플레이그라운드 WASM 은 검사기를 돌리기 전에 한 번만 생성하며, 제품 설명과 공용 용어를 영어와 한국어, 러시아어에서 맞췄습니다.
5.19한 번 준비해 여러 번 평가하는 실행, 애플리케이션 쿼터, 취소, 동시성 격리, 소비자 아티팩트, 소스 없는 네이티브 제품을 지원하는 topaz/lispex-decision-application/2 계약을 공개했습니다.
패치공개 범위사용자가 얻은 변화
5.18.1공개잠긴 패키지가 명명된 리스펙스 규칙을 고정된 한도와 쿼터에 묶는 일급 리스펙스 결정 애플리케이션을 공개했습니다. MCP 서버는 설치 툴체인 안으로 들어왔고, 호출마다 새로 시작하는 무권한 실행 도구를 함께 제공합니다.
5.18일급 리스펙스 결정 애플리케이션 프로필을 공개했습니다. 잠긴 패키지는 이름 있는 규칙을 한 번 준비하고 인터프리터나 승인된 네이티브 릴리스 타깃에서 여러 정본 값을 평가합니다. 소비자가 만드는 아티팩트와 이식 가능한 코어는 저장하고 살펴보고 검증한 뒤 새 인스턴스에서 다시 재생할 수 있으며, 소비자 산출물이므로 인증되지 않습니다.
패치공개 범위사용자가 얻은 변화
5.17.19내부승인된 봉인 코퍼스 트리에서 정확한 5.18 활성화 목록을 독립적으로 다시 도출했습니다. 기록에 고정된 T18-V 목록은 바이트 하나 바꾸지 않았습니다. 새 정본 delta에는 뒤늦게 발견한 topaz_lispex_h1_oracle 저장소 상속 표면 하나를 추가했고, 저장소 상대 Node 순회기가 외부 ripgrep 설치 없이 현재 표면을 모두 찾습니다. 읽기 전용 예행연습은 후보 overlay 파일 83개와 재빌드 경계 13개를 구성하고 부정 통제 33개를 통과한 뒤 저장소를 그대로 보존했습니다. 5.18 활성화는 없었습니다. 경계는 T18-CP, T18-V입니다.
5.17.18내부봉인 코퍼스 운반과 리눅스 사전검사 결박을 고정했습니다. GitHub 호스팅 봉인 작업은 정확한 H2H 기록을 검증하고 비공개 1일 해시 폐쇄 아티팩트 하나를 올린 뒤 원시 아티팩트 세 개를 모두 삭제합니다. 후보 사전검사는 봉인 payload에 접근할 수 없습니다. 호스팅 소비자는 payload를 불투명 바이트로 해시하고 바뀌지 않은 리눅스 결과와 결박해 고정 Sigstore 권위로 서명할 수 있습니다. 저장소 접근 제어가 봉인 payload 흐름을 보호합니다. 경계는 T18-H2I입니다.
5.17.17내부재사용 워크플로의 잠복 권위 결함을 첫 실행 전에 고쳤습니다. 백엔드를 쓰는 두 작업은 이제 호출자 상대값인 github.workflow_sha 대신 보존된 H2H 백엔드 커밋을 글자 그대로 고정합니다. 후속 권위는 과거 H2H 기록을 다시 쓰지 않고 수리된 워크플로 커밋을 별도로 고정합니다. 경계는 T18-H2H입니다.
5.17.16내부새 시드와 후보 비인지 생산자 기반을 실행 없이 고정했습니다. 불변 생산자 루트는 동결 뒤 생기는 256비트 시드에서 제한적 프로필 사례군 12개와 직접 WASM 기대값 사례 48개를 정확히 만듭니다. 분리된 재사용 워크플로는 후보 식별자·저장소·네트워크·이벤트 상태·이전 결과를 생산자 밖에 두고, 별도 외부 바인더만 생산이 끝난 뒤 후보 식별자를 붙입니다. 합성 결정성과 바인더 통제를 통과했습니다. 경계는 T18-H2H입니다.
5.17.15내부후보 동결과 원격 격리 권위를 실행 없이 고정했습니다. 역할 14개로 이루어진 분모가 안전한 일반 Git 블롭을 빠짐없이 한 번씩 분류합니다. 불변 신뢰 생성기는 Git 객체에서 정본 역할 매니페스트와 전체 폐쇄를 직접 만들고, 분리된 호스팅 호출자는 후보 바이트를 실행하지 않는 데이터로만 다루며, 오프라인 검증기는 고정 H2F 서명기와 체크인한 신뢰 루트만 받기 전에 전체 폐쇄를 독립적으로 다시 만듭니다. 일상적인 공급자 브랜치 이동은 입력이 아닙니다. 소스·Git·워크플로·검증기 통제 19개를 통과했습니다. 경계는 T18-H2G입니다.
5.17.14내부호스팅 신뢰 빌더 폐쇄를 실행 없이 고정했습니다. 앞선 불변 커밋에는 데이터 전용 격리 처리기와 정확한 스키마·정책·Sigstore Public Good 루트·서명 설정이 들어 있습니다. 그 자식 커밋에는 workflow_call 전용 GitHub 호스팅 서명기가 있고, 현재 검증기는 그 서명기 커밋과 고정 GitHub CLI 릴리스, 체크인한 루트를 고정합니다. 결정론적 합성 빌드 두 번과 데이터·파일시스템·Git·워크플로·검증기 부정 통제 16개를 통과했습니다. 경계는 T18-H2F입니다.
5.17.13내부보존한 정확한 컴포넌트 폐쇄 위에 토파즈 소유 통합 적합성 권위를 고정했습니다. 후보를 모르는 직접 컴포넌트 오라클과 독립 Node 증인, 통합 분모 12개, 호출자가 덮어쓸 수 없는 GitHub Actions OIDC 및 Sigstore 정책이 움직이는 공급자 의존성을 대체합니다. H2B는 소유자가 명시적으로 승인한 버전 제안이 있을 때 실행합니다. 이 패치는 토파즈 애플리케이션 통합 적합성을 기록합니다. 경계는 T18-H2E입니다.
5.17.12내부리스펙스 origin/develop이 직접 수리 커밋으로 나아간 뒤 입력을 다시 확인했습니다. 정확한 23경로 변경은 실패한 수신자 샘플 시도와 수리 계보를 보존합니다. 정본 원장에는 일차 승인, 정리 완료 서명, 외부 독립 확인, 메모리 기록이 없습니다. 보존한 원격 브랜치 8개에서 필수 입력 검색어 9개는 모두 0건입니다. 공급자 기록과 무관한 공개 키도 바이트 단위로 같으며, 폐기한 샘플 키와 정리 키는 토파즈 소유자 권위와 무관합니다. 경계는 T18-H2입니다.
5.17.11내부리스펙스 origin/develop이 앞으로 나아간 뒤 외부 입력 두 개를 다시 확인했습니다. 보존한 원격 브랜치 8개에서 정확한 입력 검색어 9개는 모두 0건이고 F15 공급자 기록 세 개도 바이트 단위로 같습니다. 새 Ed25519 키는 공급자 로컬 수신자 정리 관찰에만 묶이며 토파즈 소유자·검증자 신뢰 루트가 아닙니다. 경계는 T18-H2입니다.
5.17.10내부빠져 있는 외부 입력 두 개를 받을 때 쓰는 후보 중립 수신 규약을 추가했습니다. 앞으로 오는 공급자 제안과 신뢰 루트 제안은 토파즈 작업 트리 밖에 있어야 하며 저장소 원격, 커밋, Git 객체, 바이트 수, 해시, 역할, 공급자 내용 키, 서로 다른 소유자·검증자 자료를 정확히 묶어야 합니다. 검사기는 제안된 코드를 실행하지 않고 구조 검토 가능 여부만 말할 뿐 승인하지 않습니다. 일회용 합성 제안 한 쌍이 통과했고 잘못된 형식, 별칭, 가변 객체, 후보 통제, 다른 권한 범위, 비밀 자료를 넣은 부정 통제 29개가 거부됐습니다. 실제 공급자 모듈이나 신뢰 루트는 받지 않았습니다. 경계는 T18-H2입니다.
5.17.9내부보존한 인계보다 9커밋 뒤인 리스펙스 origin/develop에서 도착하지 않은 외부 입력 두 개를 추적 파일 12,250개 전체를 대상으로 다시 확인했습니다. 공급자가 소유한 자가완결 의미·요금 모듈과 후보가 통제할 수 없는 소유자·검증자 신뢰 루트는 모두 여전히 없습니다. 보존 바이트를 검사하고 공급자 Git 근거를 그대로 재실행하는 감시 검사도 추가했습니다. 경계는 T18-H2입니다.
5.17.8내부영어·한국어·러시아어로 새 후보 전용 제한된 애플리케이션 사용자 계약을 추가했습니다. 유지보수 샘플 파일 17개를 모두 고정하고 5.18 매니페스트와 루트 잠금 해시만 도출하며, 안내·발견·상태·릴리스 문구·롤백 연산 24개를 동기화해 준비합니다. 지원하지 않는 경로 7개도 명시적으로 남겼습니다. 격리된 스테이징 두 번의 바이트가 같았고 부정 통제 26개를 통과했습니다. 전체 프로필 평가기는 이미 공급되어 비공개로 보존하지만 제품에서 실행하거나 승인하지 않은 상태로 바로잡았습니다.
5.17.7내부앞으로 발행할 제한된 애플리케이션 승인 번들 하나를 불투명하게 보존하는 합성 전용 기반시설을 추가했습니다. 비순환 팩은 현재의 45개 역할 단일 번들 바이트를 정확히 묶고, 격리된 순방향 릴리스 매니페스트 v5 멤버는 후보 자격을 가질 수 없습니다. 현재 v4 릴리스 스크립트와 워크플로 바이트는 바꾸지 않았습니다. 번들 생성 두 번, 팩 조립 두 번, 원자적 스테이징 두 번과 보존본 세 개가 정확히 일치했고 부정 통제 41개를 통과했습니다.
5.17.6예약별도 버전의 프로덕션 비공개 검증 후속 형식을 위해 남겨 둔 슬롯입니다. 정확한 자가완결 공급자 의미·요금 모듈과 후보가 통제할 수 없는 소유자 또는 검증자 신뢰 루트가 아직 없으므로 발행하지 않았습니다. 외부 입력과 무관한 준비 패치만 계속할 수 있습니다.
5.17.5내부앞으로 새로 발행할 제한된 애플리케이션 승인을 위해 밀폐된 합성 전용 기반시설을 마련했습니다. 후보·프로필 권위, 정확한 공급자 컴포넌트, 애플리케이션 증거, 네이티브 대상 다섯 개의 법정과 산출물, 미래 비공개 검증 권위, 거버넌스를 닫힌 45개 역할로 관리합니다. 생성기는 합성 입력의 실제 바이트를 해시하고 후보가 아닌 기록만 내며, 별도의 깨끗한 재계산과 실패 우선 부정 검사로 결과를 대조합니다. 프로덕션 후보나 신뢰 루트, 승인 요청은 받을 수 없습니다.
5.17.4내부앞으로 실행할 후보 상대적 비공개 검증을 위해 스키마로 검사하는 합성 전용 기반시설을 마련했습니다. 후보와 법정의 폐포 형태, 제한적 생성자 권한, 관계를 끝까지 확인하는 봉인 코퍼스 수명 주기, 범용 비교, 분리된 관측·판정 레코드를 다룹니다. 이 첫 형식으로는 프로덕션 법정을 실행할 수 없으며 외부 프로덕션 경로는 모두 거부합니다. 실제 법정에는 공급자가 소유한 자가완결 의미·요금과 후보가 선택할 수 없는 신뢰 루트를 묶는 별도 버전의 후속 형식이 필요합니다. 프로덕션 후보·시드·코퍼스·결과·공개 기록은 만들지 않았습니다. 지원 제품 동작과 공개 릴리스는 바뀌지 않았습니다.
5.17.3내부5.17을 그대로 상속하지만 아직 선택할 수 없는 5.18 프로필을 등록하고, 일급 리스펙스 애플리케이션을 미래의 5.18 패키지와 표준 라이브러리 조합에만 결합했습니다. 현재 5.17의 모든 일급 애플리케이션 경로는 계속 명시적으로 거부합니다. 휴면 권위를 생성하고 MCP 참조 처분 정책과 원자적 활성화 목록을 고정했으며, 저장소를 바꾸지 않는 활성화 예행연습을 통과했습니다. 이 패치에서는 지원 제품 동작을 바꾸지 않았습니다.
5.17.2내부5.18 제한된 애플리케이션의 공개 경계와 새 승인 순서를 고정하고, 전체 프로필 통합은 5.19에, 컴파일러 품질 개선은 5.20에 배치했습니다. HTTP 서비스와 MCP는 필수 통합 대상에서 분리했습니다. 무권한 호스트의 리스펙스 연산도 명시적 거부 정책과 동기화했습니다. 이 패치에서는 지원 애플리케이션 동작을 바꾸지 않았습니다.
5.17.1내부재사용 리스펙스 평가에 애플리케이션 전체 한도, 대기열 역압, 선점 취소, 동시 호출 격리와 정리를 추가하고, 제품 승인 없이 제한된 제공자 아티팩트와 이식 가능 코어 계약의 바이트 일치를 독립 확인했습니다. 프로필로 제한한 애플리케이션 API를 인터프리터와 셀프호스트 프런트엔드까지 연결하고 비지원 대상은 명시적으로 거부하게 했습니다. 검증된 소비자 아티팩트 저장과 인증되지 않은 이식 가능 코어의 검사·검증, 새 인스턴스에서의 바이트 동일 재실행도 추가했습니다. 유지보수용 2모듈 애플리케이션은 일반 npm 설치와 소스·컴파일러 제거, 실행 파일 이동을 거쳐 로컬 네이티브 검증을 통과했습니다. 현지화된 페이지 제목이 단어 안에서 꺾이지 않도록 고치고 별도 버전 MCP의 참조 경계도 바로잡았습니다.
5.17설치 제품에 리스펙스 평가기를 별도 명령 공간으로 추가했습니다. 정확한 임베디드 구성 요소, 고정된 리소스 한도, 명시적 오류 처리, 직접 실행을 제공합니다.
패치공개 범위사용자가 얻은 변화
5.16.9내부정확한 컴포넌트의 재배포·철회·증거 폐포·릴리스 승인 기록을 닫고, 5.16 언어 의미를 바꾸지 않은 채 누적 5개 플랫폼 5.17 후보를 준비했습니다.
5.16.8내부일반 체크섬 설치를 거친 오프라인 소스 없는 제품을 검증하고, 미끼 evaluator와 선택자, 저장소·네트워크 접근, 기존 LIT 명령이 승인된 컴포넌트를 대신할 수 없음을 확인했습니다.
5.16.7내부evaluator를 일반 토파즈 바이너리에 통합하고 준비와 평가에 서로 다른 새 인스턴스를 사용하게 했습니다. 제한과 원자적 출력, 의미·런타임·승인 식별자도 분리했습니다.
5.16.6내부후보에 상대적인 테스트로 변경 연산과 다중 값 동작을 바뀌지 않은 evaluator와 일치시킨 뒤 수정된 프로필을 닫았습니다.
5.16.5내부모듈형 호스트·게스트 계약과 비공개 수직 프로브를 만들고, 정확한 버전·다이제스트 불일치 거부와 임포트·콜백·탐색·폴백 부재를 확인했습니다.
5.16.4내부첫 리스펙스 의미 표면과 관측 채널을 분류하고, 리스펙스 릴리스 전체가 아닌 임포트 없는 정확한 계량형 evaluator 컴포넌트 하나만 받아들였습니다.
5.16.3내부향후 실행 도구를 검토하기 전에 필요한 무권한 호스트, 타깃 한정 운영체제 샌드박스, 설치 환경 격리 검사를 마련했습니다.
5.16.2공개 도구실행 기능이 없는 세 도구 MCP 서버와 LSP 지원 편집기 업데이트를 각각 독립 버전으로 공개했습니다. 원격 실행은 추가하지 않았고 편집기에는 컴파일러를 묶지 않았습니다.
5.16.1내부관측된 차이와 규범적 판정을 분리하고 정확한 증거 폐포를 기계적으로 만들게 했으며, 이후 릴리스가 따를 공개 언어 프로필과 부트스트랩 프로필을 불변으로 고정했습니다.
5.16셀프호스트 기본 컴파일러(Self-hosted Default)를 공개했습니다. 지원되는 현재 모드 경로에서는 설치된 Stage 2 컴파일러가 기본이고, Rust 복구는 명시적으로만 쓰이며 조용한 폴백은 없습니다. 검사 전용 도구 세 개를 가진 MCP 서버와 LSP를 지원하는 편집기 업데이트를 각각 별도 버전으로 함께 냈으며, 원격 실행은 없고 편집기에 컴파일러를 묶지도 않았습니다.
패치공개 범위사용자가 얻은 변화
5.15.6내부새 Stage 1·Stage 2 관측과 소스 없이 실행되는 새 네이티브 제품을 만들고, 완전한 복구 입력과 비활성 5.16 전환·누적 공개 후보 검증·증거 재사용·롤백 담당 경계를 고정했습니다.
5.15.5내부발견된 self 기본 경로 차단 문제를 모두 닫고, 설치된 2모듈 앱을 기본 self로 검사·테스트·네이티브 빌드한 뒤 소스 없이 실행했으며, 제한된 외부 위험을 정확한 5.16 후보 게이트에 배정했습니다.
5.15.4내부정확한 로컬 npm 설치 하나에서 기본 self 검사·선택 테스트·관리형 Python 패키징·소스 없는 실행을 확인했습니다. 잘못된 self는 비정상 상태로 실패 폐쇄되고 명시적 Rust와 호환 경로는 독립적으로 동작합니다.
5.15.3내부설치된 Stage 2 컴파일러를 지원되는 현재 모드 21개 경로의 생략 기본값으로 바꾸고, 명시적 Rust 복구와 결정론적 Rust 호환 경로를 보존하면서 모든 선택 출처를 기록했습니다.
5.15.2내부정확한 불변 셀프 컴파일러 이미지를 프로세스당 한 번 준비하고 검증해 컴파일러와 LSP 작업이 공유하게 했습니다. 타깃 결과를 캐시하지 않으면서 손상·식별자 불일치를 거부하고 제한된 콜드 및 LSP 자원 기준을 충족했습니다.
5.15.1내부실제 패키지 언어 모드를 알 때까지 컴파일러 선택 의도를 보존해, 이전 모드 패키지는 Rust 호환 경로를 결정론적으로 고르고 명시적 self는 컴파일 작업 전에 거부하게 했습니다.
5.15이중 툴체인 지원(Supported Dual Toolchain)을 공개했습니다. Rust가 기본이자 복구 컴파일러로 남고, 명시적으로 고른 현재 모드 셀프호스트 컴파일러를 선언된 경로에서 지원합니다.
패치공개 범위사용자가 얻은 변화
5.14.8내부소스 없는 이중 엔진 Golden Path, 컴파일러·표준 라이브러리, LIT, 이미지 렌더링, 격리된 리스펙스 검사를 닫고 전체 지원 판정표와 공개 후보 검증 지도를 완성했습니다.
5.14.7내부정확한 로컬 npm 제품 하나에서 저장소 없는 Rust/self 빌드와 소스 없는 실행, 셀프 컴파일러 이미지 손상 뒤에도 독립적인 Rust 복구, 제한된 컴파일러·LSP 자원과 제품 크기를 확인했습니다.
5.14.6내부서식 정리·패키지 문서·선언된 모든 LSP 요청과 공식 VS Code 확장에 프로세스 동안 고정되는 Rust/self 선택을 추가하고, 같은 표현 결과와 무폴백 경계를 유지했습니다.
5.14.5내부셀프호스팅 컴파일러에서 타깃 정보를 투영하고 Rust 타깃 프런트엔드 폴백 없이 Python·Web·worker·Web 애플리케이션·HTTP 서비스 제품과 Web/서비스 개발 루프를 추가했습니다.
5.14.4내부타깃 전용 고정점 IR 런타임을 컴파일러 이미지에서 분리하고, self Rust 생성과 소스 없는 네이티브 빌드를 추가했으며 관리형 산출물에 정확한 컴파일러 출처를 봉인했습니다.
5.14.3내부두 컴파일러의 파싱·AST·검사·프로필·export·실행·테스트·벤치마크·잠긴 패키지·컴파일러 관찰 경로를 제한된 결과·진단 일치와 무폴백으로 추가했습니다.
5.14.2내부셀프 컴파일 제품이 직접 만든 프로필 진단·하강 결과·생성 Rust·출처와 결정론적 소스·결과 식별자를 담는 완전한 버전드 제품 및 실패 폐쇄형 기계 어댑터를 추가했습니다.
5.14.1내부명시적인 rust·self 컴파일러 선택, 검사되는 기계 판독 지원 목록, 실패 시 즉시 멈추는 사전 검사와 설치된 self 컴파일러를 쓰는 첫 현재 모드 진입 파일 검사를 추가했습니다.
5.14Stage 2 고정점을 공개했습니다. 따로 실행한 셀프호스트 컴파일러가 정본 의미와 생성 소스 원문을 그대로 재현하며, Rust Stage 0는 기본이자 복구 엔진으로 남습니다.
패치공개 범위사용자가 얻은 변화
5.13.7내부Stage 2 경계를 지나는 최소 Application Loop·LIT·이미지 렌더링·격리 리스펙스 회귀 검사를 닫고, 비활성 5.14 전환 목록과 누적 공개 후보 검증 담당 지도를 고정했습니다.
5.13.6내부정확한 로컬 npm 제품에서 설치형 타깃 및 source-free self-source Stage 2를 확인하고, Stage 2 입력을 포함한 Rust Stage 0를 오프라인 재구성했으며 제한된 자원 측정법을 고정했습니다.
5.13.5내부의미·생성 소스·출처·생성자·seed·runtime·누락 fact·지원 밖 버전의 제한된 canary가 폴백이나 완료 결과물 없이 정확한 경계에서 거부되도록 고정했습니다.
5.13.4내부정확한 컴파일러 소스 집합과 정상·진단 코퍼스에서 의미 및 원시 소스 고정점 검사를 닫고, 생성자별 출처를 구분하며 네이티브 바이너리 비교를 별도로 추적했습니다.
5.13.3내부명시적인 Stage 2 생성자와 self-source 경로를 추가하고, 별도 캐시한 컴파일러 이미지를 실행해 소스를 다시 생성했으며, 다른 단계 생성자 선택은 폴백 없이 거부했습니다.
5.13.2내부컴파일러 소스를 새로 생성하고 그 정확한 바이트를 별도 검증된 다음 단계 매니페스트와 프로그램 이미지에 묶은 뒤 실행과 고정점 관측을 후속 패치에 배정했습니다.
5.13.1내부생성자·빌드 출처를 컴파일러 생성 Rust의 정본 바이트와 분리하고, 명시적인 Stage 1/2 생성자 식별자와 원시 바이트 고정점 규약을 고정하면서 Stage 1과 Rust Stage 0 기본값을 보존했습니다.
5.13Stage 1 컴파일러 프리뷰를 공개했습니다. 생성된 컴파일러가 타깃 로어링과 Rust 코드 생성을 맡고 출처를 빠짐없이 기록하며, 숨은 Rust 폴백 없이 실패를 그대로 드러냅니다.
패치공개 범위사용자가 얻은 변화
5.12.7내부제한된 애플리케이션 루프·LIT·바이트 집중 이미지 렌더링·격리 리스펙스 provider 카나리와 정확한 활성화 목록·누적 후보 게이트 지도로 공개 준비를 닫았습니다.
5.12.6내부설치·소스 없는 Stage 1 생성자를 완전한 출처와 함께 공개하고, 실패 시 즉시 거부하는 검증·독립 Stage 0 복구·릴리스 모드 시간 및 메모리 상한을 닫았습니다.
5.12.5내부Rust 컴파일러와 생성된 컴파일러의 의미·진단·생성 소스·제품·출처 비교를 분리하고 생성자별 결정성을 고정했으며, 잘못된 생성자나 손상된 제품에서 폴백하지 않고 거부하도록 닫았습니다.
5.12.4내부생성된 컴파일러 모듈을 빌드하고 일반 패키지를 컴파일했으며, 재생이나 Rust 타깃 프런트엔드 폴백 없이 컴파일러 소스 집합 전체의 출력을 바이트 단위로 재현했습니다.
5.12.3내부결정론적인 토파즈 작성 Rust 생성기와 런타임 템플릿 레지스트리를 고정하고 타깃 컴파일러 의존성을 거부하며, 소스 없는 생성 제품 canary를 실제 컴파일·실행했습니다.
5.12.2내부선언된 Bootstrap·일반 프로그램 범위의 토파즈 작성 하강을 완성하고, 폴백 없이 연산·피연산자·캡처·검사 거부와 소스 집합 처리 범위를 정확히 고정했습니다.
5.12.1내부첫 Stage 1 교환·비공개 하강 IR·출처 규약을 고정하고, 실패 시 즉시 멈추는 가장 작은 토파즈 작성 하강 기반에서 Stage 0와 연산 식별자 및 피연산자 순서를 맞췄습니다.
5.12타입 검사 단계까지 도는 설치형 셀프 프런트엔드 프리뷰를 공개했습니다. 소스 코드 없이 의미를 비교하고 폴백 없음을 명시적으로 지키며, Rust Stage 0는 기본이자 복구 엔진으로 남습니다.
패치공개 범위사용자가 얻은 변화
5.11.6내부정확한 설치형 Self Front-end Preview를 완성했습니다. 소스 없는 검증·의미 비교가 명시적인 Rust Stage 0 복구와 무폴백 실패를 보존하고, 복구 자산은 임베드 소스를 고정합니다.
5.11.5내부검토된 현재 소스 코퍼스와 프런트엔드 전체 자체 검사를 닫았습니다. 허용·거부 프로그램은 Rust Stage 0와 일치하고 비지원 소스는 명시적으로 분류되며 고정 시간·메모리 게이트를 통과합니다.
5.11.4내부설치형 프리뷰를 토파즈 작성 정적 검사와 정본 Typed 노드·호출·캡처까지 확장했습니다. 프로토콜 경계·바인딩 진단과 표적 컴파일러·잠금 애플리케이션 사례가 Stage 0와 정확히 일치합니다.
5.11.3내부설치형 프리뷰를 패키지·마운트·표준 모듈의 논리적 import 폐쇄와 이름 해석까지 확장했습니다. 정확한 스코프·바인딩·참조·export·진단, 제한된 소스 사실과 무폴백 경계를 함께 제공합니다.
5.11.2내부설치형 프리뷰를 현재 문법 전체 파서와 정본 AST, 정확한 파싱 진단·복구까지 확장하고 노드·깊이 자원을 제한하며 Rust 폴백을 허용하지 않습니다.
5.11.1내부설치형 토파즈 작성 유니코드 렉서와 결정론적 레이아웃 프리뷰를 추가했습니다. Rust Stage 0 기본값을 바꾸거나 실패 시 되돌아가지 않고 정본 토큰 단계 관측 번들을 만듭니다.
5.11정본 컴파일러 관측, 결정론적 부트스트랩 프로필·워크로드, 단계 비교와 복구 가능한 Rust Stage 0를 갖춘 부트스트랩 기반을 공개했습니다.
패치공개 범위사용자가 얻은 변화
5.10.6내부설치형 소스 없는 관찰 흐름, 정확한 빌드 입력 출처, 결정론적 Stage 0 소스 복구와 공개 변경 없는 릴리스 매니페스트 v3 리허설을 완성했습니다.
5.10.5내부설치형 단계별 컴파일러 관찰 비교와, 결정론적 위치 이동·제한된 차이·측정된 자원 한계를 갖춘 잠긴 컴파일러급 워크로드를 추가했습니다.
5.10.4내부검사된 모든 Rust 제품을 하나의 소스 비의존 Lowered IR로 연결하고 Python은 바꾸지 않은 채 하강 결정과 생성 Rust 소스까지 정본 관찰 범위를 넓혔습니다.
5.10.3내부단일 검사 패스의 완전한 타입 사실, 정본 타입 관찰과 잠긴 결정론적 컴파일러 커널 패키지를 위한 기계 판독 가능 Bootstrap Profile을 추가했습니다.
5.10.2내부재사용 가능한 원시·레이아웃 토큰, AST, 범위, 선언, 참조, 내보내기, 진단과 출처 사실을 갖춘 설치형 정본 전처리 관찰·오프라인 검증 경계를 추가했습니다.
5.10.1내부현재 단일 파일·패키지 검사를 재생 가능한 소스 사실, 결정론적 한계, 명시적 출처 정보와 기존 진단을 보존하는 Stage 0 컴파일러 커널 경계로 연결했습니다.
5.10설명 가능한 네이티브 선택, 정확한 바이트 연산, 결정론적 코덱 연산을 갖춘 기본 바이너리·미디어 커널 루프를 공개했고 이미지 렌더링 증거를 계속 관리합니다.
패치공개 범위사용자가 얻은 변화
5.9.7내부안정적인 이미지 렌더러·proof worker 게이트와 소스 없는 제품 검사를 통과시키고, 비활성 5.10 전환 경계를 읽기 전용으로 리허설해 순정 바이너리 미디어 경로를 견고화했습니다.
5.9.6내부정확한 고정 허프만 DEFLATE 바이트를 감싸는 하나의 결정론적 RFC 1950 zlib 스트림을 추가하고, 입력 경계와 명시적인 Python 타깃 경계를 고정했습니다.
5.9.5내부비암호학적 무결성 검사를 위한 부호 없는 CRC-32/ISO-HDLC를 추가하고 인터프리터·Rust·Python·Web·Worker·플레이그라운드에서 같은 결과를 고정했습니다.
5.9.4내부결정론적 systematic RS(255,223) 보호를 추가하고, 다중 조각 바이트 동일성·입력 경계·Rust/Web 공유 실행·명시적인 Python 타깃 경계를 고정했습니다.
5.9.3내부바이너리 미디어 작업을 위한 결정론적 고정 허프만 raw DEFLATE를 추가하고, Rust·Web 바이트 동일성·검색 및 메모리 경계·명시적인 Python 타깃 경계를 고정했습니다.
5.9.2내부검사기가 증명한 직접 레코드 필드를 포함해 정확한 Bytes·ByteBuffer 네이티브 고속 경로를 추가하고, 박싱된 폴백·범위 오류·스냅샷·원자적 쓰기 동작은 그대로 보존했습니다.
5.9.1내부결정론적인 네이티브 낮추기 보고서와, 박싱된 애플리케이션은 유지하면서 조건을 만족하는 최상위 스칼라 함수만 특화하는 실패 폐쇄형 혼합 경로를 추가했습니다.
5.9HTTP 서비스 애플리케이션 루프를 공개했습니다. 인바운드 권한을 명시하고, 한도를 유한하게 두며, 운영 정보를 구조화하고, 소스 코드 없는 아티팩트를 냅니다.
패치공개 범위사용자가 얻은 변화
5.8.4내부브라우저와 서비스 Data Lens가 하나의 검사된 코어를 공유함을 증명하고, 현실적인 다국어 작업 흐름을 강화했으며 다음 정본과 읽기 전용 전환 경계를 준비했습니다.
5.8.3내부유효 설정 검사, 버전형 구조화 운영 로그, 정상 종료 수명 주기 이벤트, 재시작 증거와 반복·동시 다국어 서비스 작업 흐름을 추가했습니다.
5.8.2내부느리거나 비정상이고 연결이 끊기거나 과대·과부하·오류·무한 실행인 요청 경로를 강화하고 요청 격리와 처리 용량 복구를 검증했습니다.
5.8.1내부관리형 제한 HTTP/1.1 서비스 타깃, 요청별 취소와 자원 한계, 소스 없는 아티팩트, 브라우저 제품과 검사형 코어를 공유하는 Data Lens Service를 추가했습니다.
5.8로컬 텍스트 가져오기·내보내기와 패키지 단위로 격리된 영속 상태를 로컬 데이터 애플리케이션 루프로 공개했습니다.
패치공개 범위사용자가 얻은 변화
5.7.4내부완성된 기능을 동결하고 다음 언어 권한과 버전 표면을 준비했으며 읽기 전용 원자적 전환 리허설을 검증했습니다.
5.7.3내부현실적인 다국어 파일, 반복 작업, 정확한 내보내기, 포커스 복구와 렌더러 성능 수리로 Data Lens와 Markdown Live를 강화했습니다.
5.7.2내부제한된 패키지별 영구 문자열 상태, 명시적 불러오기·저장·삭제 결과와 유지보수 앱의 새로고침 복구를 추가했습니다.
5.7.1내부권한으로 제한된 로컬 UTF-8 파일 열기와 결정론적 텍스트 다운로드를 추가하고 실제 CSV·JSON Data Lens로 검증했습니다.
5.7데이터 렌즈와 마크다운 라이브를 포함한 설치형 오프라인 웹 애플리케이션 루프를 공개했습니다.
패치공개 범위사용자가 얻은 변화
5.6.8내부유지보수 Data Lens·Markdown Live 테스트 제품과 재현된 검사기·호스트 수리를 완성하고 원자적 5.7 전환을 준비했습니다.
5.6.7내부검사형 Web Application 생명주기, 안전한 브라우저 호스트, web-app 스캐폴드, 루프백 개발 명령과 완전한 관리형 정적 번들을 추가했습니다.
5.6.6내부고정 길이 변경 가능 ByteBuffer를 추가하고 대용량 바이너리 제품의 Web 메모리 할당·반환 소유권을 수리했습니다.
5.6.5공개설치형 Application Loop, fmt --check, 다국어 안내서, 직접 npm 공개와 제한된 현장 검사를 완성했습니다.
5.6.4공개설치형 다중 모듈 Application Loop 기반, 오프라인 네이티브·Python 패키지 빌드, 기계 판독 가능한 agent-pack 검사를 추가했습니다.
5.6.3공개공개 npm 메타데이터에서 비공개 저장소 주소를 제거했습니다.
5.6.2공개동작을 바꾸지 않고 문서와 npm 표시를 정리했습니다.
5.6.1공개빌드 작업을 일회용 저장공간으로 옮기고 Python 캐시 증가를 제한했으며 관리 아티팩트 식별·라이선스·패키지 보장을 추가했습니다.
5.6성숙한 언어·런타임·패키지·WASM 플레이그라운드·배포 영역을 하나로 통합했습니다.
패치공개 범위사용자가 얻은 변화
5.5.8공개Map·Set과 관련 컬렉션에서 부동소수점 식별성과 키 동작을 맞췄습니다.
5.5.7공개생성 Python의 Option·Result·unit 값·고차 연산 격차를 닫았습니다.
5.5.6공개Python 미지원 형식이 불완전한 출력을 만들지 않고 완전한 소스 위치 진단으로 실패하게 했습니다.
5.5.5공개제한된 JSON 서버 경계와 숫자·이스케이프·중복 키·오류 처리의 백엔드 일치를 추가했습니다.
5.5.4공개복구할 수 없는 오류 뒤에는 지연 정리 작업을 실행하지 않도록 Python의 정리·오류 동작을 맞췄습니다.
5.5.3내부함수 안의 return은 유지하면서 최상위 return 분기를 모든 백엔드가 일관되게 거부하도록 했습니다.
5.5.2내부최상위 ifmatch의 최종 값을 인터프리터·생성 Rust·생성 Python에서 일치시켰습니다.
5.5.1내부생성 Python 배열에 같은 종류 Bytes의 순서 비교와 안정적인 자연 정렬을 추가했습니다.
5.5Python을 지원 백엔드로 추가하고 인터프리터·Rust·Python 간 결과 일치 범위를 확장했습니다.
패치공개 범위사용자가 얻은 변화
5.4.1공개기존 인터프리터와 Rust 출력에 첫 실험적 Python 코드 생성 경로를 더했습니다.

5.4 플랫폼별 바이너리와 설치 경로를 표준화하고 Python 코드 생성 작업을 시작했습니다.

5.3 배포 채널별 언어 의미를 분리하지 않으면서 표준 라이브러리와 실제 프로그램 지원을 확장했습니다.

5.2 import/export 모듈 모델을 확정하고 첫 공개 v5 툴체인을 하나로 통합했습니다.

5.1 구조적 반복문을 추가하고 레이아웃·연산자·패턴·동시성·템플릿 동작을 명확히 정의했습니다.

5.0 표현식 중심 문법, Result 중심 오류 처리, 유니코드 식별자 채택을 기본 방향으로 설정했습니다.

현재 기준

이 매뉴얼은 항상 현재 토파즈 제품을 설명합니다. 정확한 설치 식별자는 툴체인 상태에서 확인하세요. 구형 문법 이전은 실제로 오래된 소스 형식을 옮길 때만 사용하세요.

리스펙스 제품과 LIT 증거

설치된 제품은 닫힌 평가 요청 하나를 실행하는 topaz lispex embed run과, 정확한 구성 요소와 계약 식별자를 보여 주는 topaz lispex embed info --json을 제공합니다. 평가기는 설치 바이너리에 고정됩니다. 지원하지 않는 프로필이나 맞지 않는 식별자는 명시적으로 거부하며, 다른 평가기를 찾거나 내려받거나 폴백하지 않습니다.

LIT는 별개의 경계입니다. 토파즈로 작성한 리스펙스 인터프리터 하나를 여러 토파즈 경로에서 실행해 같은 설계 계보 안의 회귀·통합 증거를 얻습니다. 이 증거는 소스 독립성이나 전체 언어 동등성을 세우지 않으며, 리스펙스를 토파즈 백엔드로 만들지도 않습니다.

관련 문서