▲neo 4달전 | parent | favorite | on: GN⁺: Clang 대 Clang 대결(blog.cr.yp.to)Hacker News 의견 컴파일러 작성자가 최적화로 인해 발생한 버그에 대해 책임을 지지 않음 언어 표준에 따라 이러한 버그는 프로그래머의 잘못으로 간주됨 이는 버그가 아니라는 증거임 Bernstein의 의견에 동의하지만, 때로는 잘못된 방향으로 나아감 최적화의 이점은 사용 사례에 따라 다름 C 컴파일러가 언어로 표현할 수 없는 의미를 고려하지 않는다는 불만이 있음 "필요한 의미를 표현할 수 있는 언어를 사용하라"는 결론으로 요약될 수 있음 C와 C++는 상수 시간 보장이 필요한 알고리즘 작성에 부적합함 표준은 실시간 개념이 거의 없음 컴파일러 개발자를 비난하는 것은 잘못된 방향임 Intel CPU에서는 clang이나 다른 어떤 것도 사용자 모드에서 올바른 코드를 생성할 수 없음 DOITM을 설정하는 것은 불가능함 컴파일러 작성자가 버그에 대해 책임을 지지 않는다는 주장에 동의하지 않음 이는 기본적인 C의 "정의되지 않은 동작"에 대한 오해임 clang에는 clang::optnone 속성이 있어 함수별로 최적화를 비활성화할 수 있음 GCC에는 gnu::optimize 속성이 있어 최적화 수준을 설정할 수 있음 clang::no_builtins는 memcpy와 memset 최적화를 비활성화함 C에서 정의되지 않은 동작이 많아 다른 언어로 이동할 가능성이 있음 Python에서는 set 객체의 순서가 중요하지 않음 C 컴파일러는 코드 패턴을 분석하여 최적화를 시도함 이는 허블 망원경의 문제 해결과 유사한 방식으로 더 나은 성능을 제공할 수 있음 암호화 전문가의 목표에 동의하지만, 일반 목적의 컴파일러는 이를 고려하지 않음 전문화된 컴파일러가 필요할 수 있음 일부 언어와 컴파일러가 상수 시간 암호화 루틴 작성에 부적합하다는 것은 사실임 모든 컴파일러와 비어셈블리 언어가 나쁘다는 결론은 잘못됨 간단한 도메인 특화 컴파일러와 언어를 작성해야 함 특정 함수 예시에서 SIZE_T_MAX 입력 시 정의되지 않은 동작이 발생함 이와 같은 버그가 많지만 실제로는 중요하지 않음
Hacker News 의견
컴파일러 작성자가 최적화로 인해 발생한 버그에 대해 책임을 지지 않음
Bernstein의 의견에 동의하지만, 때로는 잘못된 방향으로 나아감
C와 C++는 상수 시간 보장이 필요한 알고리즘 작성에 부적합함
Intel CPU에서는 clang이나 다른 어떤 것도 사용자 모드에서 올바른 코드를 생성할 수 없음
컴파일러 작성자가 버그에 대해 책임을 지지 않는다는 주장에 동의하지 않음
clang에는
clang::optnone
속성이 있어 함수별로 최적화를 비활성화할 수 있음gnu::optimize
속성이 있어 최적화 수준을 설정할 수 있음clang::no_builtins
는 memcpy와 memset 최적화를 비활성화함C에서 정의되지 않은 동작이 많아 다른 언어로 이동할 가능성이 있음
암호화 전문가의 목표에 동의하지만, 일반 목적의 컴파일러는 이를 고려하지 않음
일부 언어와 컴파일러가 상수 시간 암호화 루틴 작성에 부적합하다는 것은 사실임
특정 함수 예시에서 SIZE_T_MAX 입력 시 정의되지 않은 동작이 발생함