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

рдПрдХ рд╡рд░реНрд╖рд╛рдЪреНрдпрд╛ рд╡рд┐рдХрд╛рд╕рд╛рдирдВрддрд░, рд╕рд┐рд╕реНрдЯрдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдирд┐рдо 1.6 рдкреНрд░рдХрд╛рд╢рд┐рдд рдЭрд╛рд▓реА, рдЬреА рд╕реНрдерд┐рд░ рдЯрд╛рдпрдкрд┐рдВрдЧ рд╡рд╛рдкрд░рддреЗ рдЖрдгрд┐ рдкрд╛рд╕реНрдХрд▓, рд╕реА++, рдкрд╛рдпрдерди рдЖрдгрд┐ рд▓рд┐рд╕реНрдкрд╡рд░ рд▓рдХреНрд╖ рдареЗрд╡реВрди рддрдпрд╛рд░ рдХреЗрд▓реА рдЧреЗрд▓реА. рдирд┐рдо рд╕реЛрд░реНрд╕ рдХреЛрдб C, C++ рдХрд┐рдВрд╡рд╛ JavaScript рдкреНрд░рд╕реНрддреБрддреАрдХрд░рдгрд╛рдордзреНрдпреЗ рд╕рдВрдХрд▓рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ. рддреНрдпрд╛рдирдВрддрд░, рдкрд░рд┐рдгрд╛рдореА C/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) {.effectOf: cmp. }
  • рдПрдХ рдирд╡реАрди рдЗрдВрдкреЛрд░реНрдЯ рд╕рд┐рдВрдЯреЕрдХреНрд╕ тАЬрдЗрдореНрдкреЛрд░реНрдЯ foo {.all.}тАЭ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░рдгреНрдпрд╛рдд рдЖрд▓рд╛ рдЖрд╣реЗ, рдЬреЛ рддреБрдореНрд╣рд╛рд▓рд╛ рдХреЗрд╡рд│ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХрдЪ рдирд╡реНрд╣реЗ рддрд░ рдЦрд╛рдЬрдЧреА рдЪрд┐рдиреНрд╣реЗ рджреЗрдЦреАрд▓ рдЖрдпрд╛рдд рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЛ. рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕рдЪреНрдпрд╛ рдЦрд╛рдЬрдЧреА рдлреАрд▓реНрдбрдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, std/importutils рдореЙрдбреНрдпреВрд▓ рдЖрдгрд┐ рдЦрд╛рдЬрдЧреАAccess API рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗрдд. рд╕рд┐рд╕реНрдЯрдо {.all.} рд╡рд░реВрди system2 import nil echo system2.ThisIsSystem import os {.all.} echo weirdTarget
  • рдбреЙрдЯ рдСрдкрд░реЗрдЯрд░рд╕рд╛рдареА рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ, рдЬреЗ рдбрд╛рдпрдиреЕрдорд┐рдХ рдлреАрд▓реНрдб рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ. std/json рдЯреЗрдореНрдкрд▓реЗрдЯ рдЖрдпрд╛рдд рдХрд░рд╛ '.?'(a: JsonNode, b: untyped{ident}): JsonNode = a[astToStr(b)] j = %*{тАЬa1тАЭ: {тАЬa2тАЭ: 10}} assert 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 рдЖрдгрд┐ рдирд┐рдорд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмреЕрдХрдПрдВрдбрдЪреА рд╕реБрдзрд╛рд░рд┐рдд рд╕реБрд╕рдВрдЧрддрддрд╛ рдЬреА рдкреВрд░реНрд╡реА рдлрдХреНрдд 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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛