рдбреА 2.092 рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рд╕реВрдЪреАред рдЙрдзрд╛рд░ рд▓реЗрдирд╛ рдЙрдзрд╛рд░ рд▓реЗрдирд╛

рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗред рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рдРрд╕реЗ рд▓реЗрдЦреЛрдВ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдирд╣реАрдВ рдХрд░рддрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЙрдирдореЗрдВ рдХреБрдЫ рднреА рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рджреЗрдЦрддрд╛ред рдпрд╣рд╛рдВ, рджреЛ рдЫреЛрдЯреЗ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╡рд╛рдЪрд╛рд░ рд╣реИрдВ - рд╕реА ++ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдкреНрд░рддреНрдпрдХреНрд╖ рд▓рд┐рдВрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдФрд░ рд░рд╕реНрдЯ рд╕реЗ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдФрд░ рдЙрдзрд╛рд░ рд▓реЗрдиреЗ рдХреА "рдЙрдзрд╛рд░ рд▓реА рдЧрдИ" рдкреНрд░рдгрд╛рд▓реА (рджреВрд╕рд░рд╛ рдбреАрдПрдлрдП рдирд┐рдЧрд▓, рдЬреАрд╕реАрд╕реА 10 рдореЗрдВ рдЕрднреА рдХреБрдЫ рджрд┐рди рдкрд╣рд▓реЗ рдмрд╛рд╣рд░ рдЖрдпрд╛ рдерд╛, рдФрд░ рдирд┐рдо рднреА рдПрдХ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддрд╛ рд╣реИ)ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореИрдВрдиреЗ рдХрд┐рд╕реА рднреА рдердХрд╛рдК рд╕реВрдЪрд┐рдпреЛрдВ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рд▓рд┐рдВрдХ рдореВрд▓ рддрдХ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВред

рд╕реВрдЪреА рдХрд╛ рдкрд┐рдЫрд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг 2.0.91.1 (рд╕рдВрд▓рдЧреНрди)
рдЬрд╣рд╛рдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП

2.092.0 15 рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рд╡рд░реНрддрди рдФрд░ 44 рдмрдЧ рдлрд┐рдХреНрд╕ рдФрд░ рд╕реБрдзрд╛рд░ рдХреЗ рд╕рд╛рде рд╕рд╛рдордиреЗ рдЖрдПред 47 рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЗрд╕ рд░рд┐рд▓реАрдЬ рдХреЛ рд╕рдВрднрд╡ рдмрдирд╛рдпрд╛ред

рд╕рдВрдХрд▓рдХ рдкрд░рд┐рд╡рд░реНрддрди


  1. -Revert = import рдФрд░ -transition = checkimports рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реНрд╡рд┐рдЪ рд╣рдЯрд╛ рджрд┐рдП рдЧрдП
  2. C ++ GNU ABI рдирд╛рдореЛрдВ рдХреА рдХреЛрдбрд┐рдВрдЧ (рдореИрдиреНрдЧреНрд░рд┐рдВрдЧ) рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╕рдорд░реНрдерди
  3. рдмрд╛рд╣рд░реА (рдбреА) рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдФрд░ рдбрд┐рд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕ рдЕрдкреНрд░рдЪрд▓рд┐рдд рдЪрд┐рд╣реНрдирд┐рдд рдирд╣реАрдВ рд╣реИрдВ
  4. DIP25 рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЪрд┐рд╣реНрдирд┐рдд рдЙрд▓реНрд▓рдВрдШрди
  5. рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдФрд░ рдЙрдзрд╛рд░ рдкреНрд░рдгрд╛рд▓реА
  6. рдЬреЛрдбрд╝рд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдХрд┐ рдореЗрдВ -preview = рднрдВрдбрд╛рд░рдг рд╡рд░реНрдЧ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ рдореЗрдВ рдореЗрдВ рдЧреБрдВрдЬрд╛рдЗрд╢ рд╕реНрдерд┐рд░рд╛рдВрдХ
  7. рдкреНрд░рд┐рдВрдЯрдлрд╝ рдФрд░ рд╕реНрдХреИрдирдлрд╝ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЕрдм рдкреНрд░рд╛рд░реВрдк рд╡рд┐рдирд┐рд░реНрджреЗрд╢рдХ рдХреЗ рдЕрдиреБрдкрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ
  8. рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ SOURCE_DATE_EPOCH рдЕрдм рд╕рдорд░реНрдерд┐рдд рд╣реИред

рд░рдирдЯрд╛рдЗрдо рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ


  1. TypeInfo_Class/TypeInfo_Interface.isBaseOf C#/Java isAssignableFrom
  2. core.memory.pageSize minimumPageSize


  1. Date.isoWeekYear Date.fromISOWeek std.datetime.date
  2. std.xml
  3. std.digest.digest

Dub


  1. Dub lint --report-file

рд╕реБрдзрд╛рд░реЛрдВ рдФрд░ рд╕реБрдзрд╛рд░реЛрдВ рдХреА рдкреВрд░реА рд╕реВрдЪреА (

рдЗрдВрдЬреА ред) рдиреЛрдЯ ред рдореЗрд░реЗ рдкрд╛рд╕ рдкрдВрдЬреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╕рд╛рдордЧреНрд░реА рдХреА рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдкреНрд░рдХрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдЗрдВрдЯреНрд░рд╛-рдкреЗрдЬ рд▓рд┐рдВрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдореВрд▓, рдЦреЗрдж = (

рд╕рдВрдХрд▓рдХ рдкрд░рд┐рд╡рд░реНрддрди


  1. рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реНрд╡рд┐рдЪ -revert = рдЖрдпрд╛рдд рдФрд░ -transition = рдЪреЗрдХрдЗрдордкреЛрд░реНрдЯ рд╣рдЯрд╛ рджрд┐рдП рдЧрдП рд╣реИрдВред

    рдЗрди рдХреБрдВрдЬрд┐рдпреЛрдВ рдиреЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд┐рдпрд╛, рдФрд░ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдЕрдкреНрд░рдЪрд▓рд┐рдд рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдХрдВрдкрд╛рдЗрд▓рд░ рдЕрдм рдЙрдиреНрд╣реЗрдВ рдкрд╣рдЪрд╛рди рдирд╣реАрдВ рдкрд╛рдПрдВрдЧреЗред
  2. () C++ GNU ABI

    GNU ABI C++11 GCC 5.1. D C++, DMD UDA ( ) gnuAbiTag, core.attribute object ( ). ABI , , ++ . , std::string C++11 (DMD -extern-std={c++11,c++14,c++17}).

    :

    extern(C++):
    @gnuAbiTag("tagOnStruct")
    struct MyStruct {}
    @gnuAbiTag("Multiple", "Tags", "On", "Function")
    MyStruct func();

    gnuAbiTag. ( ). UDA -extern-std=c++11. (-extern-std=c++98) UDA . UDA extern(C++) .
  3. , extern(D) .

    ( ) , extern(D), . , , / , , 479, 479, .

    , , .
  4. DIP25 .

    DIP25 2.067.0, , -preview=dip25. , , DIP1000.

    , , -preview=dip25, -preview=dip25. ( ).

    DIP25 , @ safe . , ref , return , .

    struct Foo
    {
        int x;
        // returning `this.x` escapes a reference to parameter `this`, perhaps annotate with `return`
        ref int method() /* return */ { return this.x; }
    }
    // returning `v` escapes a reference to parameter `v`, perhaps annotate with `return`
    ref int identity(/* return */ ref int v) { return v; }

    return . DIP25 .
  5. -preview=in in scope const.

    const scope, in . , in (. inout ) .

    -preview=in, :

    void fun(in int x);
    void fun(const int x);

    -preview=in, :

    void fun(in int x);
    void fun(scope const int x);
  6. printf scanf

    C99 7.19.6.1 printf 7.19.6.2 scanf.

    printf , . , .

    scanf .

    :

    1. ,
    2. ,
    3. тАФ , s
    4. C99

    -, .

    .

    , printf/scanf, :

    printf("%k\n", value);  // error: non-Standard format k
    const format = "%k\n";
    printf(format.ptr, value);  // no error

    тАФ . ,

    string s;
    printf("%.*s\n", s.length, s.ptr);
    printf("%d\n", s.sizeof);
    ulong u;
    scanf("%lld%*c\n", &u);

    :

    string s;
    printf("%.*s\n", cast(int) s.length, s.ptr);
    printf("%zd\n", s.sizeof);
    ulong u;
    scanf("%llu%*c\n", &u);

    printf scanf pragma(printf) printf pragma(scanf) scanf.

    , :

    1. extern (C ) extern (C++)
    2. const(char)*
    3. тАж -v , va_list ( ┬лv┬╗ printf scanf)
    .

    ┬лv┬╗- .
  7. SOURCE_DATE_EPOCH

    SOURCE_DATE_EPOCH. UNIX ( 1970-01-01 00:00:00), . DMD __DATE__, __TIME__ __TIMESTAMP__ .



рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд╛рдорд┐рддреНрд╡ / рдЙрдзрд╛рд░ рдкреНрд░рдгрд╛рд▓реА (рдЬрд┐рд╕реЗ рдУрдмреА рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ) рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдбреАрдПрдлрд╝рд░реНрдб рдкреЙрдЗрдВрдЯрд░реНрд╕ рдПрдХ рд╡реИрдз рдореЗрдореЛрд░реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдУрдмреА рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рджрд╛рдпрд░рд╛


рдпрд╣ рдУрдмреА рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╣реИ, рдЬреЛ рдбреАред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рд╕рдВрдХреЗрддрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИ, рди рдХрд┐ рдЧрддрд┐рд╢реАрд▓ рд╕рд░рдгрд┐рдпреЛрдВ, рд╡рд░реНрдЧ рд╕рдВрджрд░реНрднреЛрдВ, рд╕рдВрджрд░реНрднреЛрдВ рдпрд╛ рд╕реВрдЪрдХ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдПред рдЗрд╕ рддрд░рд╣ рдХрд╛ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдирд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рд╕рд╛рд░ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдЗрд╕реЗ рдмрд╛рдж рдХреЗ рд▓рд┐рдП рд╕реНрдердЧрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред RAII рдСрдмреНрдЬреЗрдХреНрдЯ рдЕрдкрдиреА рд╕реНрдореГрддрд┐ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╡реЗ OB рджреНрд╡рд╛рд░рд╛ рдХрд╡рд░ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдЪрд╛рд╣реЗ рд╕реВрдЪрдХ рдЬреАрд╕реА рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЖрд╡рдВрдЯрдирдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдУрдмреА рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рд╡реЗ рднрд┐рдиреНрди рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдкрд╣рдЪрд╛рди рдпреЛрдЧреНрдп рд░реВрдк рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред

OB рдкреНрд░рдгрд╛рд▓реА рдХреЗрд╡рд▓ @ рд▓рд╛рдЗрд╡ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдПрдиреЛрдЯреЗрдЯ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕рдХреНрд░рд┐рдп рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдЬреИрд╡рд┐рдХ рдкрджрд╛рд░реНрдереЛрдВ рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЗ рдЙрд▓реНрд▓рдВрдШрди рдХреЗ рд▓рд┐рдП рдЪреЗрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд┐рдореЗрдВрдЯрд┐рдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рдж рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирдпрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред рдЙрддреНрдкрдиреНрди рдХреЛрдб рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ @ рд▓рд╛рдЗрд╡ рдлрд╝рдВрдХреНрд╢рдВрд╕ @ рд▓рд╛рдЗрд╡ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ , рддреЛ рдпрд╣ рдЙрдореНрдореАрдж рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдпреЗ рдХреЙрд▓ рдХрд┐рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рдВрд╕ рдПрдХ @ рд▓рд╛рдЗрд╡- рд╕рдВрдЧрдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реЛрдВрдЧреЗ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЧреИрд░ рд╣реИрдВ @ рд▓рд╛рдЗрд╡ рдХрд╛рд░реНрдпреЛрдВ рдлреЛрди @ рд▓рд╛рдЗрд╡ рдХрд╛рд░реНрдпреЛрдВ рдкрд╛рд░рд┐рдд рддрд░реНрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣реЗ рд▓рд╛рдЗрд╡ @ рд╕рдореНрдореЗрд▓рдиреЛрдВ ред

OB рд╕рд┐рд╕реНрдЯрдо рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ:

  • dereferencing рдкреЙрдЗрдВрдЯрд░реНрд╕ рдЬреЛ рдЕрдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИрдВ
  • рдореНрдпреВрдЯреЗрдб рдореЗрдореЛрд░реА рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдХреНрд░рд┐рдп рдкреЙрдЗрдВрдЯрд░ред

рдпрд╣ рдПрдХ рдЕрд╢рдХреНрдд рд╕реВрдЪрдХ рдпрд╛ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ, рдПрдХ рд╢реВрдиреНрдп рд╕реВрдЪрдХ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛рдПрдЧрд╛ред рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЧреИрд░-рдЕрд╢рдХреНрдд рд╕реВрдЪрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреА рдХреЛрдИ рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИред

рдУрдмреА рдХрд╛ рдореВрд▓ рд╕рд┐рджреНрдзрд╛рдВрдд


рдУрдмреА рдбрд┐рдЬрд╛рдЗрди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд┐рджреНрдзрд╛рдВрдд рд╕реЗ рдЪрд▓рддрд╛ рд╣реИ:

рдкреНрд░рддреНрдпреЗрдХ рдореЗрдореЛрд░реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдореНрдпреВрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдХрдИ рдиреЙрди-рдореНрдпреВрдЯрд┐рдВрдЧ (рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП) рдкреЙрдЗрдВрдЯрд░реНрд╕ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдбрд┐рдЬрд╝рд╛рдЗрди


рдПрдХ рдПрдХрд▓ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рд╕реВрдЪрдХ рдХреЛ рдореЗрдореЛрд░реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ "рдорд╛рд▓рд┐рдХ" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╣ рдПрдХ рдореЗрдореЛрд░реА рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рдореЗрдореЛрд░реА рдореЗрдВ рдореМрдЬреВрдж рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ (рдпрд╛рдиреА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рдЧреНрд░рд╛рдл) рдХреЗ рдорд╛рд▓рд┐рдХ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдпрд╣ рдЗрд╕ рдореЗрдореЛрд░реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдкреЙрдЗрдВрдЯрд░ рд╣реИ, рдпрд╣ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреЙрдЗрдВрдЯрд░реНрд╕ (рдореНрдпреВрдЯрд┐рдВрдЧ рдпрд╛ рдирд╣реАрдВ) рдХреЗ рдкреИрд░реЛрдВ рдХреЗ рдиреАрдЪреЗ рдХреА рдорд┐рдЯреНрдЯреА рдХреЛ рдЦрдЯрдЦрдЯрд╛рдП рдмрд┐рдирд╛, рдореЗрдореЛрд░реА рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдЗрд╕рдХреЗ рдЖрдХрд╛рд░, рдЖрд╡рдВрдЯрди, рдореБрдлреНрдд рдФрд░ рдЖрдХрд╛рд░ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ) рд╕реНрдореГрддрд┐) рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВред

рдпрджрд┐ рдореЗрдореЛрд░реА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рдХрдИ рдкреЙрдЗрдВрдЯрд░реНрд╕ рд╣реИрдВ рдЬреЛ рдХреЗрд╡рд▓-рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВ, рддреЛ рд╡реЗ рдореЗрдореЛрд░реА рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рдЕрдЪрд╛рдирдХ рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд┐рдП рдмрд┐рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХреЗ рдмрд╛рдХреА рд╡рд┐рд╡рд░рдг рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ рдХрд┐ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЗрд╡рд▓-рдкрдврд╝рдиреЗ рдФрд░ рдЕрдорд╛рдиреНрдп рдХреИрд╕реЗ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдУрдмреА рдХреЗ рдХреЛрд░ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рдХреИрд╕реЗ рдмрдирд╛рдП рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЯреНрд░реИрдХ рдХрд┐рдП рдЧрдП рдкреЙрдЗрдВрдЯрд░реНрд╕
рдХреЗрд╡рд▓ рдЙрди рдкреЙрдЗрдВрдЯрд░реНрд╕ рд╣реИрдВ рдЬреЛ @ рд▓рд╛рдЗрд╡ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЗрд╕ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ , рдлрд╝рдВрдХреНрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рдпрд╛ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдЯреНрд░реИрдХ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЕрдиреНрдп рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╕реЗ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ рдЯреНрд░реИрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ @ рд▓рд╛рдЗрд╡ рднреА , рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреНрдп рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХреЗрд╡рд▓ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдЖрдВрддрд░рд┐рдХ рдкрд░ рдирд╣реАрдВред рдЬреЛ рдкреИрд░рд╛рдореАрдЯрд░ const рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдЯреНрд░реИрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕реВрдЪрдХ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐
рдкреНрд░рддреНрдпреЗрдХ рд╕реВрдЪрдХ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░рд╛рдЬреНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рд╣реИ:

рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд
рд╕реВрдЪрдХ рдЕрдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдбреАрдлреНрд░реЗрдВрд╕рд┐рдВрдЧ рдХрд░рдирд╛ рдПрдХ рдЧрд▓рддреА рд╣реИред
рдорд╛рд▓рд┐рдХ
рд╕реНрдореГрддрд┐ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЧреНрд░рд╛рдл рдХреЗ рд▓рд┐рдП рдПрдХрдорд╛рддреНрд░ рд╕рдВрдХреЗрддрдХ рд╣реИред рдЖрдорддреМрд░ рдкрд░ рдПрдХ рд╕реВрдЪрдХ - рдорд╛рд▓рд┐рдХ рдХреЗ рдкрд╛рд╕ рдПрдХ рдЧреБрдВрдЬрд╛рдЗрд╢ рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╣реАрдВ рд╣реИ ред рдпрджрд┐ рд╕реНрдХреЛрдк рд╡рд┐рд╢реЗрд╖рддрд╛ рд╡рд╛рд▓реЗ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдПрдХ рдРрд╕реЗ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЯреНрд░реИрдХ рдХрд┐рдП рдЧрдП рдкреЙрдЗрдВрдЯрд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдУрдирд░ рдмрди рдЬрд╛рддрд╛ рд╣реИред
рдпрджрд┐ рдорд╛рд▓рд┐рдХ рдХрд╛ рд╕реВрдЪрдХ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реВрдЪрдХ рдХреЛ рд╕реМрдВрдкрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╕реНрд╡рд╛рдореА, рддреЛ рдкрд╣рд▓реЗ рдЕрдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИред
рдЙрдзрд╛рд░
рдПрдХ рдЙрдзрд╛рд░ рдкреЙрдЗрдВрдЯрд░ рдПрдХ рдРрд╕рд╛ рдкреЙрдЗрдВрдЯрд░ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдореЗрдореЛрд░реА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдЧреНрд░рд╛рдл рдореЗрдВ рдПрдХрдорд╛рддреНрд░ рдкреЙрдЗрдВрдЯрд░ рдмрди рдЬрд╛рддрд╛ рд╣реИред рд╡рд╣ рдкреЙрдЗрдВрдЯрд░ - рдУрдирд░ рд╕реЗ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЧреБрдЬрд░рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдорд╛рд▓рд┐рдХ рдЙрдзрд╛рд░рдХрд░реНрддрд╛ рдХреЗ рд╕реНрдЯреЗрдЯ рдореЗрдВ рддрдм рддрдХ рдЧреБрдЬрд░рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЙрдзрд╛рд░ рдХрд┐рдП рдЧрдП рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ред
рдПрдХ рдЙрдзрд╛рд░ рдкреЙрдЗрдВрдЯрд░ рдореЗрдВ рдПрдХ рд╕реНрдХреЛрдк рдЧреБрдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдПрдХ рдореНрдпреВрдЯреЗрдмрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП ред
рдкрдврд╝реЗрдВ-
рдУрдирд▓реА рджреНрд╡рд╛рд░рд╛ рдХреЗрд╡рд▓ Read- рдХреЗрд╡рд▓ рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред рдЬрдм рддрдХ рд░реАрдб-рдУрдирд▓реА рдкреЙрдЗрдВрдЯрд░ рдЬреАрд╡рд┐рдд рд╣реИ, рдХреЗрд╡рд▓ рд░реАрдб-рдУрдирд▓реА рдкреЙрдЗрдВрдЯрд░реНрд╕ рдЕрднреА рднреА рдЗрд╕ рдУрдирд░ рд╕реЗ рдЕрд╕рд╛рдЗрди рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд░реАрдб-рдУрдирд▓реА рдкреЙрдЗрдВрдЯрд░ рдореЗрдВ рд╕реНрдХреЛрдк рдЧреБрдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдпрд╣ рдПрдХ рдореНрдпреВрдЯреЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдкреЙрдЗрдВрдЯрд░ рднреА рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЬреАрд╡рди рдХрд╛рд▓

"рдЙрдзрд╛рд░" рдпрд╛ "рд░реАрдб-рдУрдирд▓реА" рд╕рдВрдХреЗрддрдХ рдХрд╛ рдЬреАрд╡рдирдХрд╛рд▓ рдЙрд╕ рдХреНрд╖рдг рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЗрд╕реЗ рдкрд╣рд▓реЗ dereferenced рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдФрд░ рдЙрд╕ рдХреНрд╖рдг рд╕реЗ рдЬрд┐рд╕реЗ рдЗрд╕реЗ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдХреЛрдИ рдорд╛рди рдЕрд╕рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдФрд░ рдЙрд╕ рд╕рдордп рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдореВрд▓реНрдп рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдбрд┐рд░реЗрд▓ рд╣реЛрддрд╛ рд╣реИред

рдЗрд╕реЗ рдиреЙрди-рд▓реЗрдХреНрд╕рд┐рдХрд▓ рд▓рд╛рдЗрдлрдЯрд╛рдЗрдо рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ ред

рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЗрдЯ рдЯреНрд░рд╛рдВрдЬрд╝рд┐рд╢рди

рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдЕрдкрдиреЗ рд░рд╛рдЬреНрдп рдХреЛ рддрдм рдмрджрд▓рддрд╛ рд╣реИ рдЬрдм рдЗрдирдореЗрдВ рд╕реЗ рдПрдХ рдСрдкрд░реЗрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

  • рдЗрд╕рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдЯреИрдХ рдкрд░ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░), рдЬреЛ рд╕реВрдЪрдХ рдХреЛ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ
  • рдЖрд░рдВрднреАрдХрд░рдг (рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ)
  • рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ - рд╕реНрд░реЛрдд рдФрд░ рд▓рдХреНрд╖реНрдп рдкреЙрдЗрдВрдЯрд░реНрд╕ рдЙрди рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрджрд▓рддреЗ рд╣реИрдВ рдЬреЛ рд╡реЗ рд░рд╛рдЬреНрдпреЛрдВ рдореЗрдВ рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЙрдирдХреЗ рдкреНрд░рдХрд╛рд░ рдФрд░ рднрдВрдбрд╛рд░рдг рд╡рд░реНрдЧ рдкрд░ рднреА
  • out ( ), , .
  • ref , , .
  • , .
  • - ()
  • , , .
  • , ,
  • , ,
  • ,


рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ, рдРрд╕реЗ рдХрдИ рдкрд╣рд▓реВ рд╣реИрдВ рдЬрд┐рди рдкрд░ рдЕрднреА рддрдХ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рддрдм рддрдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдпрд╣ рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рдХрд┐ рдпрд╣ рдПрдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕рдорд╛рдзрд╛рди рд╣реИред

рдЧрд▓рддрд┐рдпрд╛рдБ

рдХрдИ рдЧрд▓рддрд┐рдпреЛрдВ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреА рд╣реИрдВред рдХреГрдкрдпрд╛ рдЙрдиреНрд╣реЗрдВ "рдСрдЙрдВрд╕" рдХреАрд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдмрдЧрдЬрд╝рд┐рд▓рд╛ рдФрд░ рдЯреИрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдВред рдЕрдиреНрдп рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпрд╣рд╛рдВ рд╕реВрдЪреАрдмрджреНрдз рд╣реИрдВред

рд╡рд░реНрдЧреЛрдВ рдФрд░ рд╕рд╛рд╣рдЪрд░реНрдп рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЛ рдЯреНрд░реИрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдЬреАрд╕реА рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред

рдЧреИрд░-рдорд╛рд▓рд┐рдХреЛрдВ рд╕реЗ рдЙрдзрд╛рд░ рд▓реЗрдиреЗ рдФрд░ рдкрдврд╝рдиреЗ рдХреЗ

рд▓рд┐рдП рд▓реАрдХ рдХреЗ рд▓рд┐рдП рдирд┐рдЧрд░рд╛рдиреА рдХреА рдЬрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рд╕рдВрдХреЗрддрдХ рдирд╣реАрдВред рдЙрдзрд╛рд░рдХрд░реНрддрд╛рдУрдВ рдХреЛ рдорд╛рд▓рд┐рдХ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рд╡реЗ рдПрдХ рд╕реВрдЪрдХ рдХреЗ рд╕рд╛рде рдЖрд░рдВрдн рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

@live void uhoh()
{
    scope p = malloc();  // p is considered an Owner
    scope const pc = malloc(); // pc is not considered an Owner
} // dangling pointer pc is not detected on exit

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХреЗ рджрд╛рдпрд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдХреЗрдд рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ , рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд▓рд╛рдЬ рдХрд░рдХреЗ рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдиреЗрд╕реНрдЯреЗрдб рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЛ рдкрдврд╝рд╛ / рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЯреНрд░реИрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред

@live void ohno()
{
    auto p = malloc();

    void sneaky() { free(p); }

    sneaky();
    free(p);  // double free not detected
}

рдЕрдкрд╡рд╛рдж

рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рдлреЗрдВрдХреЗ рдЧрдП рд╣реИрдВред

@live void leaky()
{
    auto p = malloc();
    pitcher();  // throws exception, p leaks
    free(p);
}

рдПрдХ рд╕рдорд╛рдзрд╛рди рдЧреБрдВрдЬрд╛рдЗрд╢ (рдирд┐рдХрд╛рд╕) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ :

@live void waterTight()
{
    auto p = malloc();
    scope(exit) free(p);
    pitcher();
}

рдпрд╛ рддреЛ RAII рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдпрд╛ рдХреЗрд╡рд▓ nothrow рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред

рдЖрд▓рд╕реА рдорд╛рдкрджрдВрдбреЛрдВ рдкрд░

рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рджреНрд╡рд┐рдШрд╛рдд рдЬрдЯрд┐рд▓рддрд╛

рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╡рд┐рд╢реНрд▓реЗрд╖рдг рджреНрд╡рд┐рдШрд╛рдд рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, @ рд▓рд╛рдЗрд╡ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЫреЛрдЯрд╛ рд░рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ ред

рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореЗрдореЛрд░реА рд╕рдореВрд╣реЛрдВ рдХреЛ

рдорд┐рд▓рд╛рдХрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореЗрдореЛрд░реА рдкреВрд▓ рдХрд╛ рдорд┐рд╢реНрд░рдг :

void* xmalloc(size_t);
void xfree(void*);

void* ymalloc(size_t);
void yfree(void*);

auto p = xmalloc(20);
yfree(p);  // should call xfree() instead

рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ред

рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдкреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рджрд░рдХрд┐рдирд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

U* umalloc();
void ufree(U*);

V* vmalloc();
void vfree(V*);

auto p = umalloc();
vfree(p);  // type mismatch

рдФрд░ рд╕рдВрднрд╡рддрдГ @ рд▓рд╛рдЗрд╡ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рд╢реВрдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд╣рд┐рдд рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ ред рдПрдХ рдЪрд░ рд╕рдорд╛рд░реЛрд╣ рдХреЗ рддрд░реНрдХ рдПрдХ рдЪрд░ рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд▓рд┐рдП рддрд░реНрдХ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рд┐рдВрдЯрдл) рдХрд╛ рд╕реЗрд╡рди рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ, рдпрд╣ рдмрд╣реБрдд рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╕рдВрднрд╡рддрдГ рд╕рдореАрдХреНрд╖рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред





рд░рдирдЯрд╛рдЗрдо рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ


  1. TypeInfo_Class/TypeInfo_Interface.isBaseOf C#/Java isAssignableFrom.

    TypeInfo_Class.isBaseOf true, , , , . isBaseOf, isAssignableFrom, , opAssign D тАФ . TypeInfo_Interface.isBaseOf , TypeInfo_Class, TypeInfo_Interface.
  2. core.memory.pageSize minimumPageSize.

    pageSize .

    import core.memory : pageSize;
    ubyte[] buffer = new ubyte[pageSize];

    minimumPageSize .

    , . , . pageSize, .

    , , , : ubyte[minimumPageSize].

    import core.memory : minimumPageSize;
    ubyte[minimumPageSize] buffer;



  1. Date.isoWeekYear Date.fromISOWeek std.datetime.date

    ISO 8601 , Date and DateTime.

    ISO , . Date.fromISOWeek(2020, 11, DayOfWeek.mon) Date(2020, 3, 9).

    ISO , () .isoWeekYear Date ISO. , .isoWeekAndYear , .
  2. std.xml .

    std.xml . , , UndeaD. xml dub- dxml.
  3. std.digest.digest .

    2.076.1 . std.digest .

    std.digest.digest 2.101.

Dub


  1. .

    Posix , .dub. dub (, .swap.file.d), . , dub . , dub.

    , .
  2. Dub lint --report-file.

    Dub lint --report-file: dub lint --report-file report.json

All Articles