рдирд┐рдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛ рд░рд┐рд▓реАрдЬ 1.6.0

рд╡рд┐рдХрд╛рд╕рдХреЛ рдПрдХ рд╡рд░реНрд╖ рдкрдЫрд┐, рдкреНрд░рдгрд╛рд▓реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛ рдирд┐рдо 1.6 рдХреЛ рд░рд┐рд▓реАрдЬ рдкреНрд░рдХрд╛рд╢рд┐рдд рднрдпреЛ, рдЬрд╕рд▓реЗ рд╕реНрдерд┐рд░ рдЯрд╛рдЗрдкрд┐рдЩ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ рд░ рдкрд╛рд╕реНрдХрд▓, C++, рдкрд╛рдЗрдерди рд░ рд▓рд┐рд╕реНрдкрдорд╛ рдЖрдБрдЦрд╛рдХреЛ рд╕рд╛рде рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред рдирд┐рдо рд╕реНрд░реЛрдд рдХреЛрдб C, C++, рд╡рд╛ JavaScript рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡рдорд╛ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░рд┐рдПрдХреЛ рдЫред рддреНрдпрд╕рдкрдЫрд┐, рдирддрд┐рдЬрд╛ C/C++ рдХреЛрдб рдХреБрдиреИ рдкрдирд┐ рдЙрдкрд▓рдмреНрдз рдХрдореНрдкрд╛рдЗрд▓рд░ (clang, gcc, icc, рднрд┐рдЬреБрдЕрд▓ C++) рдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдпреЛрдЧреНрдп рдлрд╛рдЗрд▓рдорд╛ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░рд┐рдиреНрдЫ, рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ C рдирдЬрд┐рдХреИрдХреЛ рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди рд╣рд╛рд╕рд┐рд▓ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ, рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рджреМрдбрдХреЛ рд▓рд╛рдЧрддрд▓рд╛рдИ рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦреНрдиреБрд╣реБрдиреНрди рднрдиреЗред рдлреЛрд╣реЛрд░ рд╕рдВрдХрд▓рди рдЧрд░реНрдиреЗ ред рдкрд╛рдЗрдерди рдЬрд╕реНрддреИ, рдирд┐рдорд▓реЗ рдмреНрд▓рдХ рд╡рд┐рднрд╛рдЬрдХрдХреЛ рд░реВрдкрдорд╛ рдЗрдиреНрдбреЗрдиреНрдЯреЗрд╕рди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред рдореЗрдЯрд╛рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рдЙрдкрдХрд░рдгрд╣рд░реВ рд░ рдбреЛрдореЗрди-рд╡рд┐рд╢рд┐рд╖реНрдЯ рднрд╛рд╖рд╛рд╣рд░реВ (DSLs) рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдХреНрд╖рдорддрд╛рд╣рд░реВ рд╕рдорд░реНрдерд┐рдд рдЫрдиреНред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛрдб MIT рд▓рд╛рдЗрд╕реЗрдиреНрд╕ рдЕрдиреНрддрд░реНрдЧрдд рдкреНрд░рджрд╛рди рдЧрд░рд┐рдПрдХреЛ рдЫред

рдирдпрд╛рдБ рд░рд┐рд▓реАрдЬрдорд╛ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЫрдиреН:

  • рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рдкреНрд░рдХрд╛рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рд╕рд╛рде рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдЧреНрдп [T] рд╡рд░реНрдЧ рдердкрд┐рдпреЛред рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдпреЛрдЧ[T](a: рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдпреЛрдЧреНрдп[T]): T = var рдирддрд┐рдЬрд╛: A рдорд╛ ai рдХреЛ рд▓рд╛рдЧрд┐ T: рдкрд░рд┐рдгрд╛рдо += ai рдирддрд┐рдЬрд╛ assert sum(iota(3)) == 0 + 1 + 2 # рд╡рд╛ 'iota( рей) рдпреЛрдЧрдлрд▓
  • рдЪрдпрдирд╛рддреНрдордХ рдкреНрд░рднрд╛рд╡рд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ ".effectOf" рдПрдиреЛрдЯреЗрд╕рдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╕рдорд░реНрдерди рдердкрд┐рдпреЛред рдЬрдм рдкрд░рд┐рднрд╛рд╖рд┐рдд (nimHasEffectsOf): {.рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ: "strictEffects"ред} else: {.pragma: effectsOf.} proc mysort(s: seq; cmp: proc(a, b: T): int) {. effectsOf: cmpред }
  • рдирдпрд╛рдБ рдЖрдпрд╛рдд рд╕рд┐рдиреНрдЯреНрдпрд╛рдХреНрд╕ "рдЗрдореНрдкреЛрд░реНрдЯ foo {.all.}" рдкреНрд░рд╕реНрддрд╛рд╡ рдЧрд░рд┐рдПрдХреЛ рдЫ, рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдорд╛рддреНрд░ рд╣реЛрдЗрди, рдирд┐рдЬреА рдкреНрд░рддреАрдХрд╣рд░реВ рдкрдирд┐ рдЖрдпрд╛рдд рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рд╡рд╕реНрддреБрд╣рд░реВрдХреЛ рдирд┐рдЬреА рдХреНрд╖реЗрддреНрд░рд╣рд░реВрдорд╛ рдкрд╣реБрдБрдЪ рдЧрд░реНрди, std/importutils рдореЛрдбреНрдпреБрд▓ рд░ privateAccess API рдердкрд┐рдПрдХреЛ рдЫред рдкреНрд░рдгрд╛рд▓реА {.all.} рдмрд╛рдЯ system2 import nil echo system2.ThisIsSystem import os {.all.} echo weirdTarget
  • рдбрдЯ рдЕрдкрд░реЗрдЯрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╕рдорд░реНрдерди рдердкрд┐рдпреЛ, рдЬреБрди рдЧрддрд┐рд╢реАрд▓ рдХреНрд╖реЗрддреНрд░рд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдЖрдпрд╛рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН j.?a1.?a2.getInt == 10
  • рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдмреНрд▓рдХ рддрд░реНрдХрд╣рд░реВрдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдЯреЗрдореНрдкреНрд▓реЗрдЯ fn(a = 1, b = 2, body1, body2) = рдЦрд╛рд░реЗрдЬ рдЧрд░реНрдиреБрд╣реЛрд╕реН fn(a = 1): bar1 do: bar2
  • рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛-рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЕрдХреНрд╖рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рд▓рд╛рдЧреВ рдЧрд░рд┐рдПрдХреЛ рдЫ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, "-128'bignum'")ред func `'big`*(num: cstring): JsBigInt {.importjs: "BigInt(#)ред"} assert 0xffffffffffffffff'big == (1'big shl 64'big) - 1'big
  • рдХрдореНрдкрд╛рдЗрд▓рд░рд▓реЗ "--eval: cmd" рдЖрджреЗрд╢рд▓рд╛рдИ рдХрдорд╛рдгреНрдб рд▓рд╛рдЗрдирдмрд╛рдЯ рд╕реАрдзреИ рдирд┐рдо рдЖрджреЗрд╢рд╣рд░реВ рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рд▓рд╛рдЧреВ рдЧрд░реНрджрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ 'nim -eval:"echo 1"ред
  • рдирд┐рдореНрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмреНрдпрд╛рдХрдЗрдиреНрдбрдХреЛ рд▓рд╛рдЧрд┐ рддрдкрд╛рдИрдВрдХреЛ рдЖрдлреНрдиреИ рд╡рд┐рд╕реНрддрд╛рд░рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдЧрд░рд┐рдпреЛред
  • рддреНрд░реБрдЯрд┐ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рддреНрд░реБрдЯрд┐рд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рд╕рдиреНрджрд░реНрдн рджреЗрдЦрд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдзреЗрд░реИ рд╡рд┐рд╕реНрддрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдЫред рдЕрдиреБрдХреВрд▓рди рдХрдореНрдкрд╛рдЗрд▓рд░ рдЪреЗрддрд╛рд╡рдиреАрд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░рд┐рдпреЛред
  • "--gc:arc" рд░ "--gc:orc" рдлреЛрд╣реЛрд░ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрдиреЗрд╣рд░реВрдХреЛ рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрдирдорд╛ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╕реБрдзрд╛рд░ рднрдПрдХреЛ рдЫред
  • рд╕рдмреИ рдмреНрдпрд╛рдХрдЗрдиреНрдбрд╣рд░реВрд▓реЗ рдкреВрд░реНрдгрд╛рдВрдХ рд░ рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдмрд┐рдиреНрджреБ рдирдореНрдмрд░рд╣рд░реВ рдкрд╛рд░реНрд╕ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдХреЛрдбрдХреЛ рд╢реБрджреНрдзрддрд╛ рд░ рдкреНрд░рджрд░реНрд╢рди рд╕реБрдзрд╛рд░ рдЧрд░реЗрдХреЛ рдЫред
  • JS, VM рд░ nimscript рдмреНрдпрд╛рдХрдЗрдиреНрдбрд╣рд░реВрдХреЛ рд╕реБрдзрд╛рд░рд┐рдПрдХреЛ рдЕрдиреБрдХреВрд▓рддрд╛ рдореЛрдбреНрдпреБрд▓рд╣рд░реВрд╕рдБрдЧ рдЬреБрди рдкрд╣рд┐рд▓реЗ рдорд╛рддреНрд░ C рдмреНрдпрд╛рдХрдЗрдиреНрдбрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрджрдереНрдпреЛ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, std/prelude рдореЛрдбреНрдпреБрд▓)ред C, JS рд░ VM рдмреНрдпрд╛рдХрдЗрдиреНрдбрд╣рд░реВрдХреЛ рд╕рд╛рде stdlib рдореЛрдбреНрдпреБрд▓рд╣рд░реВрдХреЛ рдкрд░реАрдХреНрд╖рдг рд╕реНрдерд╛рдкрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдЫред
  • Apple Silicon/M1 рдЪрд┐рдк, 32-bit RISC-V, armv8l рд░ CROSSOS рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рдердкрд┐рдпреЛред
  • рдореЛрдбреНрдпреБрд▓рд╣рд░реВ std/jsbigints, std/tempfiles рд░ std/sysrand рдердкрд┐рдпреЛред рдкреНрд░рдгрд╛рд▓реА, рдЧрдгрд┐рдд, рдЕрдирд┐рдпрдорд┐рдд, json, jsonutils, os, typetraits, wrapnils, lists рд░ hashes рдореЛрдбреНрдпреБрд▓рд╣рд░реВрдорд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд╕реБрдзрд╛рд░рд╣рд░реВ рдЧрд░рд┐рдПрдХрд╛ рдЫрдиреНред

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди