Rust 1.100.0, never 타입과 사용자 지정 메모리 할당기 정식 도입
-
트렌드
- 11-13
- 199 회
- 0 건
Rust 1.100.0은 오랫동안 실험 단계에 머물던 never 타입과 사용자 지정 메모리 할당기를 정식 기능으로 내놓았어요. 패키지 관리자 Cargo도 쓰지 않는 의존성 경고와 '갓 나온 버전 늦게 받기' 설정을 갖춰, 코드 표현력과 공급망 안전을 함께 챙길 수 있게 됐어요.
주요 기술적 특징
- never 타입 정식화:
!로 쓰는 never 타입(절대 값을 돌려주지 않는 상황을 나타내는 타입)이 안정 버전에 들어왔어요. 이에 맞춰 기존Infallible은!의 별칭이 됐고, 타입 추론의 기본 대체값도 모든 에디션에서!로 바뀌었어요. - 사용자 지정 할당기: 메모리를 어디서 어떻게 빌려 올지 정하는 할당기를 직접 고를 수 있게 됐어요.
Allocator트레이트와Vec::new_in,Box::new_in같은 함수가 정식 API가 됐어요. 그동안은 외부 라이브러리로 흉내 내야 했던 기능이에요. - Cargo의 공급망 안전 장치: Cargo에 자체 린트(코드 점검 경고) 체계가 생겼고, 쓰지 않는 의존성을 알려 주는 검사가 기본 포함됐어요. 또 '의존성 쿨다운' 설정을 켜면 너무 최근에 올라온 버전은 해석 과정에서 건너뛰어요. 이미 잠금 파일에 있는 버전은 예외예요.
- 그 밖의 변화:
bool::toggle,str::trim_prefix,Box::map등 작은 편의 함수가 여럿 추가됐어요. 웹어셈블리 대상wasm32-wasip3는 Tier 2 지원으로 올라갔어요. - 라이선스: Rust는 MIT와 Apache 2.0 이중 라이선스로 배포되고, 일부는 BSD 계열 라이선스를 따라요.
개발자들의 반응
- 할당기 정식화를 반기는 실사용 후기가 있었어요. 한 개발자는 최근 아레나 할당기의 메모리 누수를 고치느라
Vec::new_in을 쓰려고 별도 라이브러리를 들였는데, 이제 표준에서 바로 쓸 수 있다고 했어요. - 쓰지 않는 의존성 경고에 대해선 실제 경고 출력을 붙이며 반가워하는 반응이 나왔어요.
- 불만도 있었어요. 한 개발자는 컴파일이 여전히 느리고, 매일 90GB에 이르는 임시 파일을 지워야 한다고 토로했어요.
- 안정적인 ABI(컴파일된 코드끼리 맞물리는 규약)가 아직 없다는 아쉬움도 나왔어요. 소스 코드가 아닌 형태로 라이브러리를 배포하려면 꼭 필요하다는 주장과, 앞으로의 호환성을 묶어 버리는 부담이 크다는 반론이 맞섰어요.
- never 타입과 짝을 이루는
Result::into_ok등이 왜 함께 나오지 않았는지 묻는 댓글도 있었어요. 다른 개발자는 마감일을 조금 놓쳐 다음 버전에 들어간다고 답했어요.
기술적 의미와 한계
이번 버전은 시스템 프로그래밍처럼 메모리를 세밀하게 다루는 개발자에게 특히 쓸모 있어 보여요. 할당기를 표준 방식으로 바꿀 수 있어 외부 라이브러리 의존을 줄일 수 있기 때문이에요. Cargo의 쿨다운 설정은 갓 올라온 악성 버전을 피하려는 팀에게 의미가 있다고 봐요.
다만 업그레이드 전에 호환성 항목을 확인해야 해요. never 타입 대체값 변경, box 패턴 문법 제거, if let에서 클로저가 변수를 더 정확히 붙잡는 변화 등은 새 컴파일 오류를 낼 수 있다고 명시돼 있어요. 빌드 중간 산출물의 폴더 구조도 바뀌어, 그 경로에 기대던 도구는 손봐야 할 수 있어요. 컴파일 속도 개선 여부는 이번 자료로는 확인되지 않아요.