▲GN⁺ 2024-09-30 | parent | ★ favorite | on: 64비트 time_t 전환의 위험성(blogs.gentoo.org)Hacker News 의견 Gentoo는 패키지를 설치하지 않고 빌드하는 옵션이 부족함 Gentoo는 패키지 빌드와 설치가 한 단계로 이루어짐 ABI 변경 시 업데이트 중에 시스템이 쉽게 깨질 수 있음 64비트 time_t 문제는 널리 알려진 ABI 변경의 예시임 .so 버전 관리를 통해 ABI 변경을 처리하는 방법 .so 파일은 버전 번호를 포함함 패키지 자체가 내부적으로 버전 번호를 관리함 64비트 time_t를 지원하려면 상속된 ABI를 제어할 수 있는 추가 구성 요소가 필요함 Mac OS X에서 off_t와 ino_t를 처리한 방법 기존 호출과 구조체는 그대로 유지됨 새로운 호출과 타입에 64 접미사가 추가됨 빌드 시 컴파일된 바이너리가 실행될 최소 OS 버전을 지정할 수 있음 Debian은 64비트 time_t로 전환하는 데 어려움을 겪었음 소스 기반 배포판은 더 어려운 전환 과정을 겪음 32비트 유닉스 시스템에서 time_t를 unsigned 32비트로 대체한 경험 2038년 이후 68년을 더 사용할 수 있게 됨 유닉스 에포크 이전의 날짜를 표현할 수 없음 FreeBSD에서 amd64 포트를 할 때 64비트 time_t를 도입한 경험 32비트 함수 인자가 64비트로 자동 변환됨 초기부터 64비트 time_t를 사용하여 문제를 피함 tzcode가 64비트 안전하지 않아서 일부 문제를 겪음 BSD 매뉴얼 페이지의 "Bugs" 섹션에 있는 농담 "You can tune a file system, but you can't tune a fish." 소스 기반 배포판 대신 Debian 같은 비소스 기반 배포판으로 전환하고 싶다는 의견 32비트 time_t와 64비트 time_t의 구조체 오프셋 차이 64비트 타입에서는 b가 64비트 정렬이 필요하여 패딩이 추가됨 C에서 타입 별칭이 나중에 변경될 가능성을 제공한다고 생각했지만, 실제로는 그렇지 않음 문제를 빨리 해결하는 것이 좋다는 의견 OpenBSD는 모든 아키텍처에서 64비트 time_t를 사용함
Hacker News 의견
Gentoo는 패키지를 설치하지 않고 빌드하는 옵션이 부족함
time_t문제는 널리 알려진 ABI 변경의 예시임.so버전 관리를 통해 ABI 변경을 처리하는 방법.so파일은 버전 번호를 포함함time_t를 지원하려면 상속된 ABI를 제어할 수 있는 추가 구성 요소가 필요함Mac OS X에서
off_t와ino_t를 처리한 방법64접미사가 추가됨Debian은 64비트
time_t로 전환하는 데 어려움을 겪었음32비트 유닉스 시스템에서
time_t를 unsigned 32비트로 대체한 경험FreeBSD에서 amd64 포트를 할 때 64비트
time_t를 도입한 경험time_t를 사용하여 문제를 피함BSD 매뉴얼 페이지의 "Bugs" 섹션에 있는 농담
소스 기반 배포판 대신 Debian 같은 비소스 기반 배포판으로 전환하고 싶다는 의견
32비트
time_t와 64비트time_t의 구조체 오프셋 차이b가 64비트 정렬이 필요하여 패딩이 추가됨C에서 타입 별칭이 나중에 변경될 가능성을 제공한다고 생각했지만, 실제로는 그렇지 않음
문제를 빨리 해결하는 것이 좋다는 의견
time_t를 사용함