ืžื”ื“ื•ืจืช ืฉืคืช ื”ืชื›ื ื•ืช ื ื™ื 1.6.0

ืœืื—ืจ ืฉื ื” ืฉืœ ืคื™ืชื•ื—, ื™ืฆื ืœืื•ืจ ืฉืคืช ื”ืชื›ื ื•ืช ื”ืžืขืจื›ืชื™ืช Nim 1.6, ื”ืžืฉืชืžืฉืช ื‘ื”ืงืœื“ื” ืกื˜ื˜ื™ืช ื•ื ื•ืฆืจื” ืขื ืขื™ืŸ ืขืœ Pascal, C++, Python ื•-Lisp. ืงื•ื“ ื”ืžืงื•ืจ ืฉืœ Nim ืžื•ืจื›ื‘ ืœื™ื™ืฆื•ื’ C, C++ ืื• JavaScript. ืœืื—ืจ ืžื›ืŸ, ืงื•ื“ ื”-C/C++ ื”ืžืชืงื‘ืœ ืžื•ืจื›ื‘ ืœืงื•ื‘ืฅ ื”ืคืขืœื” ื‘ืืžืฆืขื•ืช ื›ืœ ืžื”ื“ืจ ื–ืžื™ืŸ (clang, gcc, icc, Visual C++), ื”ืžืืคืฉืจ ืœืš ืœื”ืฉื™ื’ ื‘ื™ืฆื•ืขื™ื ืงืจื•ื‘ื™ื ืœ-C, ืื ืœื ืœื•ืงื—ื™ื ื‘ื—ืฉื‘ื•ืŸ ืืช ืขืœื•ื™ื•ืช ื”ืจื™ืฆื” ืืกืคืŸ ื”ืืฉืคื”. ื‘ื“ื•ืžื” ืœืคื™ื™ืชื•ืŸ, ื ื™ื ืžืฉืชืžืฉ ื‘ื”ื–ื—ื” ื›ืžืคืจื™ื“ื™ ื‘ืœื•ืง. ื›ืœื™ื ื•ื™ื›ื•ืœื•ืช ืžื˜ื-ืชื›ื ื•ืช ืœื™ืฆื™ืจืช ืฉืคื•ืช ืกืคืฆื™ืคื™ื•ืช ืœืชื—ื•ื (DSL) ื ืชืžื›ื™ื. ืงื•ื“ ื”ืคืจื•ื™ืงื˜ ืžืกื•ืคืง ืชื—ืช ืจื™ืฉื™ื•ืŸ MIT.

ืฉื™ื ื•ื™ื™ื ื‘ื•ืœื˜ื™ื ื‘ืžื”ื“ื•ืจื” ื”ื—ื“ืฉื” ื›ื•ืœืœื™ื:

  • ื”ื•ืกืคื” ืืช ื”ืžื—ืœืงื” iterable[T] ืขื ืžื™ืžื•ืฉ ืกื•ื’ ืขื‘ื•ืจ ืื™ื˜ืจื˜ื•ืจื™ื. template sum[T](a: iterable[T]): T = var result: T for ai in a: result += ai result assert sum(iota(3)) == 0 + 1 + 2 # ืื• 'iota( 3).sum'
  • ื ื•ืกืคื” ืชืžื™ื›ื” ื ื™ืกื™ื•ื ื™ืช ื‘ื”ืขืจื•ืช ".effectsOf" ืœื™ื™ืฉื•ื ืืคืงื˜ื™ื ืกืœืงื˜ื™ื‘ื™. when defined(nimHasEffectsOf): {.experimental: "strictEffects".} ืื—ืจ: {.pragma: effectsOf.} proc mysort(s: seq; cmp: proc(a, b: T): int) {.effectsOf: cmp. }
  • ื”ื•ืฆืข ืชื—ื‘ื™ืจ ื™ื™ื‘ื•ื โ€‹โ€‹ื—ื“ืฉ "import foo {.all.}", ื”ืžืืคืฉืจ ืœืš ืœื™ื™ื‘ื ืœื ืจืง ืกืžืœื™ื ืฆื™ื‘ื•ืจื™ื™ื, ืืœื ื’ื ืคืจื˜ื™ื™ื. ื›ื“ื™ ืœื’ืฉืช ืœืฉื“ื•ืช ืคืจื˜ื™ื™ื ืฉืœ ืื•ื‘ื™ื™ืงื˜ื™ื, ื ื•ืกืคื• ืžื•ื“ื•ืœ std/importutils ื•-privateAccess API. ืžืžืขืจื›ืช {.all.} ื›ืžืขืจื›ืช2 ื™ื™ื‘ื•ื โ€‹โ€‹ืืคืก ื”ื“ ืžืขืจื›ืช2. ThisIsSystem import os {.all.} echo weirdTarget
  • ื ื•ืกืคื” ืชืžื™ื›ื” ื ื™ืกื™ื•ื ื™ืช ืœืื•ืคืจื˜ื•ืจื™ ื ืงื•ื“ื•ืช, ืฉื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ื”ื ื›ื“ื™ ืœื™ื™ืฉื ืฉื“ื•ืช ื“ื™ื ืžื™ื™ื. ื™ื™ื‘ื•ื โ€‹โ€‹ืชื‘ื ื™ืช std/json '.?'(a: JsonNode, b: untyped{ident}): JsonNode = a[astToStr(b)] ืชืŸ j = %*{โ€œa1โ€: {โ€œa2โ€: 10}} ืœืงื‘ื•ืข j.?a1.?a2.getInt == 10
  • ื ื™ืชืŸ ืœืฆื™ื™ืŸ ืคืจืžื˜ืจื™ื ื ื•ืกืคื™ื ื‘ืืจื’ื•ืžื ื˜ื™ื ืฉืœ ื‘ืœื•ืง. ืชื‘ื ื™ืช fn(a = 1, b = 2, body1, body2) = discard fn(a = 1): bar1 do: bar2
  • ื”ื•ื˜ืžืขื” ืชืžื™ื›ื” ื‘ืžื™ืœื•ืœื™ื ื”ืžื•ื’ื“ืจื™ื ืขืœ ื™ื“ื™ ืžืฉืชืžืฉ (ืœื“ื•ื’ืžื”, "-128'bignum'"). func `'big`*(num: cstring): JsBigInt {.importjs: "BigInt(#)".} assert 0xffffffffffffff'big == (1'big shl 64'big) - 1'big
  • ื”ืžื”ื“ืจ ืžื™ื™ืฉื ืืช ื”ืคืงื•ื“ื” "-eval:cmd" ื›ื“ื™ ืœื”ืคืขื™ืœ ื™ืฉื™ืจื•ืช ืคืงื•ื“ื•ืช ื ื™ื ืžืฉื•ืจืช ื”ืคืงื•ื“ื”, ืœืžืฉืœ 'nim -eval:"echo 1"'.
  • ืกื™ืคืง ืชืžื™ื›ื” ืœื™ืฆื™ืจืช ื”ืจื—ื‘ื•ืช ืžืฉืœืš ืขื‘ื•ืจ ื”-Nimscript backend.
  • ื”ื•ื“ืขื•ืช ื”ืฉื’ื™ืื” ื”ื•ืจื—ื‘ื• ืžืื•ื“ ื›ื“ื™ ืœื”ืฆื™ื’ ืืช ื”ื”ืงืฉืจ ื”ืžืฉื•ื™ืš ืœืฉื’ื™ืื”. ื”ื˜ืžืข ืื–ื”ืจื•ืช ืžื”ื“ืจ ืžื•ืชืืžื•ืช ืื™ืฉื™ืช.
  • ื‘ื™ืฆื•ืขื™ื ืžืฉื•ืคืจื™ื ืžืฉืžืขื•ืชื™ืช ืฉืœ ืื•ืกืคื™ ื”ืืฉืคื” "--gc:arc" ื•-"--gc:orc".
  • ื›ืœ ื”ืขื ืคื™ื ื”ืื—ื•ืจื™ื™ื ืฉื™ืคืจื• ืืช ื”ื“ื™ื•ืง ื•ื”ื‘ื™ืฆื•ืขื™ื ืฉืœ ืงื•ื“ ืœื ื™ืชื•ื— ืžืกืคืจื™ื ืฉืœืžื™ื ื•ืžืกืคืจื™ ื ืงื•ื“ื” ืฆืคื”.
  • ืชืื™ืžื•ืช ืžืฉื•ืคืจืช ืฉืœ JS, VM ื•-nimscript ืขื ืžื•ื“ื•ืœื™ื ืฉืขื‘ื“ื• ื‘ืขื‘ืจ ืจืง ืขื ื”-C backend (ืœื“ื•ื’ืžื”, ืžื•ื“ื•ืœ std/prelude). ื‘ื“ื™ืงื•ืช ืฉืœ ืžื•ื“ื•ืœื™ื stdlib ืขื C, JS ื•-VM backends ื”ื•ืงืžื”.
  • ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ืฉื‘ื‘ Apple Silicon/M1, 32 ืกื™ื‘ื™ื•ืช RISC-V, armv8l ื•ืžืขืจื›ื•ืช CROSSOS.
  • ื ื•ืกืคื• ืžื•ื“ื•ืœื™ื std/jsbigints, std/tempfiles ื•-std/sysrand. ื‘ื•ืฆืขื• ืฉื™ืคื•ืจื™ื ืžืฉืžืขื•ืชื™ื™ื ื‘ืžื•ื“ื•ืœื™ ื”ืžืขืจื›ืช, ืžืชืžื˜ื™ืงื”, ืืงืจืื™ืช, json, jsonutils, OS, ืชื›ื•ื ื•ืช ื›ืชื™ื‘ื”, wrapnils, ืจืฉื™ืžื•ืช ื•-hash.

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”