• SEARCH

    통합검색
  • GAMEZONE
    • 커뮤니티
      • 공지사항
      • 유저게시판
        • 등업게시판
        • 출석체크
        • 정회원 무료자료실
      • 스크린샷
      • 인증자료실
    • 리니지
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 메이플스토리
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 바람의나라
      • 자유게시판
      • 홍보게시판
      • 자료게시판
        • 유틸자료실
        • 소스자료실
        • 클라이언트
        • 팩 자료실
      • 연구게시판
        • 개발내역
        • 질문과답변
        • 기타
      • 강의게시판
        • DR
        • CR
        • 구버전
        • 클라이언트 개조
        • 노하우 게시판
        • 게임공략 & 팁
    • 다크에덴
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 믹스마스터
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 라그나로크
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 기타게임
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 게임강의
    • 비베&포토샵
      • 자유게시판
      • 자료실
        • 일반자료실
        • 포인트 자료실
      • 노하우게시판
      • 포토샵게시판
    • 모바일
      • 게임공략
      • 포인트 자료실
      • 유틸자료실
      • 자유게시판
  • 기타게임 소스자료실
    • 기타게임 소스자료실 기타 ()
    • [Rust 공식문서 한국어 정리] ㉓. Rust 안전하지 않은 코드 가이드라인

      • 오뉴노노
      • 1시간 전 0

    [Rust 공식문서 한국어 정리] ㉓. Rust 안전하지 않은 코드 가이드라인

    원문 제목: The Rust Unsafe Code Guidelines
    작성자: Rust Unsafe Code Guidelines Working Group

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    📌 1. 서론 — 이 문서가 다루는 내용
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    이 문서는 Rust의 unsafe 코드가 어떻게 동작해야 하는지에 대한 공식적인 가이드라인을 제시합니다.
    컴파일러 최적화, 메모리 모델, 타입 레이아웃, undefined behavior(UB)의 경계를 명확히 정의하는 것을 목표로 합니다.
    unsafe 블록을 작성하는 개발자와 컴파일러를 개발하는 엔지니어 모두가 동일한 의미론(semantics)을 공유하도록 합니다.
    아직 완성되지 않은 부분도 많지만, Rust의 미래 표준화를 위한 핵심 기반 문서입니다.
    안전한 코드를 유지하면서도 성능이 필요한 저수준 코드를 작성하려는 고급 Rust 개발자에게 필수적입니다.

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    🔑 2. 핵심 개념 4가지
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    ① Undefined Behavior(UB): Rust가 보증하지 않는 동작으로, 발생 시 프로그램의 행동은 예측 불가능해집니다.
    ② Stacked Borrows: Rust의 메모리 모델 검증 도구(Miri)가 사용하는 참조 유효성 규칙의 한 형태입니다.
    ③ Layout/Representation: 타입의 메모리 크기, 정렬, 필드 배치 방식을 명시적으로 제어하는 방법입니다.
    ④ Validity Invariant: 특정 타입의 비트 패턴이 유효하기 위해 반드시 만족해야 하는 조건입니다.

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    📖 3. 주요 내용 상세
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    안전하지 않은 코드 가이드라인의 핵심은 UB를 정의하고 이를 피하는 방법을 제시하는 것입니다.
    데이터 레이스, 널 포인터 역참조, 부적절한 타입 캐스팅, 미초기화 메모리 읽기 등이 대표적인 UB입니다.
    unsafe를 사용한다고 해서 이러한 규칙이 면제되는 것이 아니라, 책임이 프로그래머에게 전가됩니다.

    메모리 모델 측면에서 Rust는 LLVM의 메모리 모델을 기반으로 하되, 소유권과 수명 개념을 추가합니다.
    Stacked Borrows는 참조가 생성되고 무효화되는 시점을 정형화하여, aliasing 규칙을 엄격하게 적용합니다.
    이 규칙은 Miri에서 실행 시 검증되며, 잠재적인 UB를 조기에 발견하는 데 큰 도움을 줍니다.

    타입 레이아웃은 #[repr(C)], #[repr(transparent)], #[repr(packed)] 등으로 제어합니다.
    #[repr(transparent)]는 래퍼 타입이 낭부 단일 필드와 동일한 ABI를 갖도록 보장합니다.
    #[repr(packed)]는 패딩을 제거해 메모리를 절약하지만, 정렬되지 않은 접근으로 인한 UB 위험이 있습니다.

    Validity Invariant는 각 타입이 가질 수 있는 유효한 비트 패턴을 정의합니다.
    예를 들어 bool은 0x00 또는 0x01만 유효하고, 0x02는 UB입니다.
    &mut T는 널이 아니어야 하고, dangling이 아니어야 하며, 고유한 액세스 권한을 가져야 합니다.
    unsafe 코드에서 std::mem::transmute나 raw 포인터 캐스팅을 할 때 이러한 불변성을 반드시 만족해야 합니다.

    동시성과 관련해서는 LLVM의 ThreadSanitizer와 Rust의 Send/Sync 트레이트가 상호작용하는 방식을 다룹니다.
    unsafe로 Send나 Sync를 수동 구현할 때는 해당 타입이 실제로 스레드 간 안전하게 공유/이동 가능함을 증명해야 합니다.
    가이드라인은 이러한 증명에 필요한 충분 조건을 제시하려고 합니다.

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    🛠 4. 실전 활용
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    unsafe 코드를 작성한 후 Miri(mirivm)로 테스트하여 Stacked Borrows 위반과 UB를 검출합니다.
    #[repr(C)]와 #[repr(transparent)]를 FFI 경계에서 정확히 구분하여 사용합니다.
    unsafe 함수의 contract(계약)를 문서에 명시하고, 호출자가 이를 준수하도록 강제합니다.

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    ✅ 5. 정리
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    Unsafe Code Guidelines는 Rust의 저수준 의미론을 형식화하려는 중요한 노력입니다.
    UB 경계, 메모리 모델, 타입 불변성을 이해하면 훨씬 견고한 unsafe 코드를 작성할 수 있습니다.
    Miri와 같은 도구를 병행하여 가이드라인의 규칙이 실제 코드에서 준수되는지 지속적으로 검증하세요.

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    🔗 출처 링크
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    원문: https://rust-lang.github.io/unsafe-code-guidelines/
    GitHub: https://github.com/rust-lang/unsafe-code-guidelines

    #Rust #Unsafe #UB #Miri #MemoryModel #SystemsProgramming #번역

    이 게시물을..
    N
    0
    0
    • [Rust 공식문서 한국어 정리] 71. Rust Crossbeam 가이드오뉴노노
    • 2
      오뉴노노

    오뉴노노 님의 최근 글

    [Rust 공식문서 한국어 정리] 135. Rust Weak<T> 가이드 2026 06.08 [Rust 공식문서 한국어 정리] 118. Rust Tuple 타입 가이드 2026 06.08 [Rust 공식문서 한국어 정리] 117. Rust Type Alias 가이드 2026 06.08 [Rust 공식문서 한국어 정리] 116. Rust Existential Types 가이드 2026 06.08 [Rust 공식문서 한국어 정리] 115. Rust Generic Associated Types 가이드 2026 06.08

    오뉴노노 님의 최근 댓글

    ㅋㅋㅋㅋㅋ 2019 01.14 잘 읽었습니다 2018 12.30 포인트가 없어서 아직 시작을 못하고있는데요! 글은 잘 읽었습니다! 포인트 쌓고 도전할거에요 2018 12.30
    글쓴이의 서명작성글 감추기 
    댓글 쓰기 에디터 사용하기 닫기
    • view_headline 목록
    • 14px
    • [Rust 공식문서 한국어 정리] 71. Rust Crossbeam 가이드
    • 목록
      view_headline
    × CLOSE
    전체 던파 5 뮤 18 천상비 프로젝트신루 5 아이온 18 어둠의전설 28 리니지2 7 크로노스 5 칼온라인 3 기타 411
    기본 (503) 제목 날짜 수정 조회 댓글 추천 비추
    분류 정렬 검색
    • 포인트 획득 공지
      5
      2026.04.24 - 19:48 4853 5
    • 링크 업로드 관련 공지
      8
      2026.03.25 - 21:56 4660 8
    • 인증메일 공지
      3
      2026.03.15 - 16:42 4559 3
    • 파일링크 및 인증메일 발송 관련 문의 안내
      9
      2026.03.14 - 22:03 5163 9
    • 포인트 게시판 안내
      2026.02.28 - 19:14 5940
    • 게임존 사이트 변경 사항 안내
      9
      2026.02.26 - 01:07 7799 9
    • 소스자료는 직접 올려주세요
      2017.06.06 - 16:16 852
    503
    기타
    [Rust 공식문서 한국어 정리] 135. Rust Weak<T> 가이드
    N
    오뉴노노 18분 전
    502
    기타
    [Rust 공식문서 한국어 정리] 118. Rust Tuple 타입 가이드
    N
    오뉴노노 19분 전
    501
    기타
    [Rust 공식문서 한국어 정리] 117. Rust Type Alias 가이드
    N
    오뉴노노 19분 전
    500
    기타
    [Rust 공식문서 한국어 정리] 116. Rust Existential Types 가이드
    N
    오뉴노노 20분 전
    499
    기타
    [Rust 공식문서 한국어 정리] 115. Rust Generic Associated Types 가이드
    N
    오뉴노노 20분 전
    498
    기타
    [Rust 공식문서 한국어 정리] 114. Rust Impl Trait 반환 가이드
    N
    오뉴노노 20분 전
    497
    기타
    [Rust 공식문서 한국어 정리] 113. Rust Higher-Ranked Trait Bounds 가이드
    N
    오뉴노노 20분 전
    496
    기타
    [Rust 공식문서 한국어 정리] 112. Rust 라이프타임 서브타이핑 가이드
    N
    오뉴노노 21분 전
    495
    기타
    [Rust 공식문서 한국어 정리] 111. Rust 'static 라이프타임 가이드
    N
    오뉴노노 21분 전
    494
    기타
    [Rust 공식문서 한국어 정리] 110. Rust Sync 트레이트 가이드
    N
    오뉴노노 22분 전
    493
    기타
    [Rust 공식문서 한국어 정리] 109. Rust Send 트레이트 가이드
    N
    오뉴노노 22분 전
    492
    기타
    [Rust 공식문서 한국어 정리] 108. Rust Sized 트레이트 가이드
    N
    오뉴노노 22분 전
    491
    기타
    [Rust 공식문서 한국어 정리] 107. Rust Copy/Clone 트레이트 가이드
    N
    오뉴노노 23분 전
    490
    기타
    [Rust 공식문서 한국어 정리] 106. Rust Hash 트레이트 가이드
    N
    오뉴노노 23분 전
    489
    기타
    [Rust 공식문서 한국어 정리] 105. Rust PartialOrd/Ord 트레이트 가이드
    N
    오뉴노노 23분 전
    488
    기타
    [Rust 공식문서 한국어 정리] 104. Rust PartialEq/Eq 트레이트 가이드
    N
    오뉴노노 24분 전
    487
    기타
    [Rust 공식문서 한국어 정리] 103. Rust Debug 트레이트 가이드
    N
    오뉴노노 24분 전
    486
    기타
    [Rust 공식문서 한국어 정리] 102. Rust Display/Formatter 가이드
    N
    오뉴노노 25분 전
    485
    기타
    [Rust 공식문서 한국어 정리] 101. Rust Default 트레이트 가이드
    N
    오뉴노노 25분 전
    484
    기타
    [Rust 공식문서 한국어 정리] 100. Rust Deref/DerefMut 트레이트 가이드
    N
    오뉴노노 26분 전
    483
    기타
    [Rust 공식문서 한국어 정리] 99. Rust Drop 트레이트 가이드
    N
    오뉴노노 28분 전
    482
    기타
    [Rust 공식문서 한국어 정리] 98. Rust ToOwned 트레이트 가이드
    N
    오뉴노노 28분 전
    481
    기타
    [Rust 공식문서 한국어 정리] 97. Rust Borrow/BorrowMut 트레이트 가이드
    N
    오뉴노노 29분 전
    480
    기타
    [Rust 공식문서 한국어 정리] 96. Rust AsRef/AsMut 트레이트 가이드
    N
    오뉴노노 29분 전
    479
    기타
    [Rust 공식문서 한국어 정리] 95. Rust From/Into 트레이트 가이드
    N
    오뉴노노 29분 전
    478
    기타
    [Rust 공식문서 한국어 정리] 94. Rust IntoIterator 가이드
    N
    오뉴노노 29분 전
    477
    기타
    [Rust 공식문서 한국어 정리] 93. Rust Iterator 가이드
    N
    오뉴노노 30분 전
    476
    기타
    [Rust 공식문서 한국어 정리] 92. Rust Option<T> 가이드
    N
    오뉴노노 30분 전
    475
    기타
    [Rust 공식문서 한국어 정리] 91. Rust Result<T,E> 가이드
    N
    오뉴노노 30분 전
    474
    기타
    [Rust 공식문서 한국어 정리] 90. Rust panic! 매크로 가이드
    N
    오뉴노노 31분 전
    473
    기타
    [Rust 공식문서 한국어 정리] 89. Rust Release 빌드 최적화 가이드
    N
    오뉴노노 31분 전
    472
    기타
    [Rust 공식문서 한국어 정리] 88. Rust Profile 설정 가이드
    N
    오뉴노노 31분 전
    471
    기타
    [Rust 공식문서 한국어 정리] 87. Rust Cargo.lock 가이드
    N
    오뉴노노 32분 전
    470
    기타
    [Rust 공식문서 한국어 정리] 86. Rust Cargo.toml 가이드
    N
    오뉴노노 32분 전
    469
    기타
    [Rust 공식문서 한국어 정리] 85. Rust Cargo 가이드
    N
    오뉴노노 32분 전
    468
    기타
    [Rust 공식문서 한국어 정리] 84. Rust rustup 가이드
    N
    오뉴노노 1시간 전 1
    467
    기타
    [Rust 공식문서 한국어 정리] 83. Rust cargo-deny 가이드
    N
    오뉴노노 1시간 전
    466
    기타
    [Rust 공식문서 한국어 정리] 82. Rust cargo-audit 가이드
    N
    오뉴노노 1시간 전
    465
    기타
    [Rust 공식문서 한국어 정리] 81. Rust Miri 가이드
    N
    오뉴노노 1시간 전
    464
    기타
    [Rust 공식문서 한국어 정리] 80. Rust Criterion 가이드
    N
    오뉴노노 1시간 전
    463
    기타
    [Rust 공식문서 한국어 정리] 79. Rust OpenTelemetry 가이드
    N
    오뉴노노 1시간 전
    462
    기타
    [Rust 공식문서 한국어 정리] 78. Rust Tracing 가이드
    N
    오뉴노노 1시간 전
    461
    기타
    [Rust 공식문서 한국어 정리] 77. Rust Axum 가이드
    N
    오뉴노노 1시간 전
    460
    기타
    [Rust 공식문서 한국어 정리] 76. Rust Reqwest 가이드
    N
    오뉴노노 1시간 전
    459
    기타
    [Rust 공식문서 한국어 정리] 75. Rust Hyper 가이드
    N
    오뉴노노 1시간 전
    458
    기타
    [Rust 공식문서 한국어 정리] 74. Rust MIO 가이드
    N
    오뉴노노 1시간 전
    457
    기타
    [Rust 공식문서 한국어 정리] 73. Rust Tokio 가이드
    N
    오뉴노노 1시간 전
    456
    기타
    [Rust 공식문서 한국어 정리] 72. Rust Rayon 가이드
    N
    오뉴노노 1시간 전
    455
    기타
    [Rust 공식문서 한국어 정리] 71. Rust Crossbeam 가이드
    N
    오뉴노노 1시간 전
    454
    기타
    [Rust 공식문서 한국어 정리] 70. Rust thread_local 가이드
    N
    오뉴노노 1시간 전
    • 1 2 3 4 5 6 7 8 9 10 .. 11
    • / 11 GO
  • GAMEZONE
 GAMEZONE all rights reserved.
by OrangeDay