рдирд┐рдо 1.6.0 рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХрд╛ рд╡рд┐рдореЛрдЪрди

рдПрдХ рд╕рд╛рд▓ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдмрд╛рдж, рд╕рд┐рд╕реНрдЯрдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдирд┐рдо 1.6 рдХреА рд░рд┐рд▓реАрдЬрд╝ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреА рдЧрдИ, рдЬреЛ рд╕реНрдерд┐рд░ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ рдФрд░ рдкрд╛рд╕реНрдХрд▓, рд╕реА++, рдкрд╛рдпрдерди рдФрд░ рд▓рд┐рд╕реНрдк рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдХрд░ рдмрдирд╛рдИ рдЧрдИ рдереАред рдирд┐рдо рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ C, C++, рдпрд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж, рдкрд░рд┐рдгрд╛рдореА рд╕реА/рд╕реА++ рдХреЛрдб рдХреЛ рдХрд┐рд╕реА рднреА рдЙрдкрд▓рдмреНрдз рдХрдВрдкрд╛рдЗрд▓рд░ (рдХреНрд▓реИрдВрдЧ, рдЬреАрд╕реАрд╕реА, рдЖрдИрд╕реАрд╕реА, рд╡рд┐рдЬреБрдЕрд▓ рд╕реА++) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рд╕реА рдХреЗ рдХрд░реАрдм рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдпрджрд┐ рдЖрдк рдЪрд▓рд╛рдиреЗ рдХреА рд▓рд╛рдЧрдд рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ рдХреВрдбрд╝рд╛ рдмреАрдирдиреЗ рд╡рд╛рд▓рд╛. рдкрд╛рдпрдерди рдХреЗ рд╕рдорд╛рди, рдирд┐рдо рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдХреЛ рдмреНрд▓реЙрдХ рдбрд┐рд▓реАрдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдбреЛрдореЗрди-рд╡рд┐рд╢рд┐рд╖реНрдЯ рднрд╛рд╖рд╛рдПрдВ (рдбреАрдПрд╕рдПрд▓) рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрдЯрд╛рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЙрдкрдХрд░рдг рдФрд░ рдХреНрд╖рдорддрд╛рдПрдВ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛрдб рдПрдордЖрдИрдЯреА рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдирдИ рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рдмрджрд▓рд╛рд╡реЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

  • рдкреБрдирд░рд╛рд╡рд░реНрддрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдкреБрдирд░рд╛рд╡реГрддреНрддреАрдп[рдЯреА] рд╡рд░реНрдЧ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдпреЛрдЧ[рдЯреА](рдП: рдкреБрдирд░рд╛рд╡рд░реНрддрдиреАрдп[рдЯреА]): рдЯреА = рд╡рд░ рдкрд░рд┐рдгрд╛рдо: рдП рдореЗрдВ рдПрдЖрдИ рдХреЗ рд▓рд┐рдП рдЯреА: рдкрд░рд┐рдгрд╛рдо += рдПрдЖрдИ рдкрд░рд┐рдгрд╛рдо рдЬреЛрд░ рдпреЛрдЧ(рдЖрдИрдУрдЯрд╛(3)) == 0 + 1 + 2 # рдпрд╛ 'рдЖрдИрдУрдЯрд╛( 3).рдпреЛрдЧ'
  • рдЪреБрдирд┐рдВрджрд╛ рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ".effectOf" рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд▓рд┐рдП рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред рдЬрдм рдкрд░рд┐рднрд╛рд╖рд┐рдд (nimHasEffectsOf): {.рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ: "strictEffects"ред} рдЕрдиреНрдпрдерд╛: {.pragma: EffectsOf.} proc mysort(s: seq; cmp: proc(a, b: T): int) {. EffectsOf: cmp. }
  • рдПрдХ рдирдпрд╛ рдЖрдпрд╛рдд рд╕рд┐рдВрдЯреИрдХреНрд╕ "рдЖрдпрд╛рдд рдлреВ {.all.}" рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рди рдХреЗрд╡рд▓ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ, рдмрд▓реНрдХрд┐ рдирд┐рдЬреА рдкреНрд░рддреАрдХреЛрдВ рдХреЛ рднреА рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдирд┐рдЬреА рдХреНрд╖реЗрддреНрд░реЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, std/importutils рдореЙрдбреНрдпреВрд▓ рдФрд░ PrivateAccess API рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред рд╕рд┐рд╕реНрдЯрдо рд╕реЗ {.all.} as system2 рдЖрдпрд╛рдд рд╢реВрдиреНрдп рдЗрдХреЛ system2.ThisIsSystem рдЖрдпрд╛рдд рдУрдПрд╕ {.all.} рдЗрдХреЛ рдЕрдЬреАрдм рд▓рдХреНрд╖реНрдп
  • рдбреЙрдЯ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧрддрд┐рд╢реАрд▓ рдлрд╝реАрд▓реНрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред std/json рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЖрдпрд╛рдд рдХрд░реЗрдВ '.?'(a: JsonNode, b: untyped{ident}): JsonNode = a[astToStr(b)] Let j = %*{тАЬa1тАЭ: {тАЬa2тАЭ: 10}}assert j.?a1.?a2.getInt == 10
  • рдмреНрд▓реЙрдХ рддрд░реНрдХреЛрдВ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЯреЗрдореНрдкрд▓реЗрдЯ fn(a = 1, b = 2, body1, body2) = рддреНрдпрд╛рдЧреЗрдВ fn(a = 1): bar1 do: bar2
  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╢рд╛рдмреНрджрд┐рдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "-128'рдмрд┐рдЧреНрдирдо'")ред func `'big`*(num: cstring): JsBigInt {.importjs: "BigInt(#)"ред}assert 0xffffffffffffff'big == (1'big shl 64'big) - 1'big
  • рдХрдВрдкрд╛рдЗрд▓рд░ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рд╕реАрдзреЗ рдирд┐рдо рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП "--eval:cmd" рдХрдорд╛рдВрдб рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП 'nim -eval:"echo 1"'ред
  • рдирд┐рдорд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмреИрдХрдПрдВрдб рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдпрддрд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИред
  • рддреНрд░реБрдЯрд┐ рд╕реЗ рдЬреБрдбрд╝реЗ рд╕рдВрджрд░реНрдн рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдХрд╛рдлреА рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХрд╕реНрдЯрдо рдХрдВрдкрд╛рдЗрд▓рд░ рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреА рдЧрдИрдВред
  • "--gc:arc" рдФрд░ "--gc:orc" рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╕реБрдзрд╛рд░ рд╣реБрдЖред
  • рд╕рднреА рдмреИрдХрдПрдВрдб рдиреЗ рдкреВрд░реНрдгрд╛рдВрдХреЛрдВ рдФрд░ рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреА рд╕рдЯреАрдХрддрд╛ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рд╣реИред
  • рдЬреЗрдПрд╕, рд╡реАрдПрдо рдФрд░ рдирд┐рдорд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмреИрдХрдПрдВрдб рдХреА рдЙрди рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рдЕрдиреБрдХреВрд▓рддрд╛ рдЬреЛ рдкрд╣рд▓реЗ рдХреЗрд╡рд▓ рд╕реА рдмреИрдХрдПрдВрдб (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрд╕рдЯреАрдбреА/рдкреНрд░реАрд▓реНрдпреВрдб рдореЙрдбреНрдпреВрд▓) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рдереЗред C, JS рдФрд░ VM рдмреИрдХрдПрдВрдб рдХреЗ рд╕рд╛рде stdlib рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
  • Apple рд╕рд┐рд▓рд┐рдХреЙрди/M1 рдЪрд┐рдк, 32-рдмрд┐рдЯ RISC-V, Armv8l рдФрд░ CROSSOS рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред
  • рдореЙрдбреНрдпреВрд▓ std/jsbigints, std/tempfiles рдФрд░ std/sysrand рдЬреЛрдбрд╝реЗ рдЧрдПред рд╕рд┐рд╕реНрдЯрдо, рдЧрдгрд┐рдд, рд░реИрдВрдбрдо, json, jsonutils, os, рдЯрд╛рдЗрдкрдЯреНрд░реЗрдЯреНрд╕, рд░реИрдкреНрдирд┐рд▓реНрд╕, рд▓рд┐рд╕реНрдЯ рдФрд░ рд╣реИрд╢ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реБрдзрд╛рд░ рдХрд┐рдП рдЧрдП рд╣реИрдВред

рд╕реНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ