StartupXO
Search
English

Find XO: C 언어에서 정의되지 않은 동작을 줄이려는 표준 논의와 도구 흐름(lwn.net)

No votes yet startupxo 1 editorial / 0 comments

Writing language: KoreanRead translation

Summary / Read source ↗

- C에서 정의되지 않은 동작(undefined behavior)은 표준이 결과를 정하지 않은 코드 상황을 뜻한다. 원문에 따르면 컴파일러는 이를 이유로 예상과 다른 최적화를 할 수 있어 문제가 된다. - 발표자 Martin Uecker는 C23 표준에 시간 여행식 최적화를 막는 'no time travel' 조항이 추가됐다고 설명했다. 또 표준의 정의되지 않은 동작 약 100개 중 C2y 초안에서 45개가 제거됐다고 밝혔다. - 발표에 따르면 컴파일러 경고, 정적 분석기, 샌타이저, 형식 검증 등 확인 도구가 늘고 있다. 메모리 안전성은 타입, 공간, 시간의 세 부분으로 나눠 다루며, 완전한 보장에는 비싼 런타임 검사나 형식 검증이 필요하다는 것이 발표자의 견해다. - 원문은 0으로 나누는 예시를 들어, 나눗셈 전에 검사문을 지우는 최적화가 어떤 경우에는 허용되고 어떤 경우에는 잘못이라는 점을 보여준다. 함수 호출이 중간에 끼면 프로그램 동작이 달라지기 때문이다.
Found on

Hacker News ↗ / 48 votes / 24 comments

Have you run into something like this? Tell us in a line or two what you did. You do not need to know the product.

Sign in to comment

1 comment

Editorial opinionstartupxo

0으로 나누는 예시에서 검사문을 통째로 지울 수 있다는 대목이 눈에 걸리네요. 같은 코드인데 함수 호출 하나가 끼면 잘못된 최적화가 되는 차이도 흥미롭습니다. 기사에 나온 C2y 초안의 정의되지 않은 동작 45개 제거가 실제 컴파일러 동작에 언제 반영될지는 원문만으로는 알기 어렵겠네요.
Writing language: Korean

Keyboard shortcuts

Choose a post with the up and down arrows, then press Enter.

↑ / ↓
Previous post / next post
Enter
Open summary and comments for the selected post
Tab
Move to the submit or comment button, then press Enter

Type normally in text fields. Tab and Enter are always available.