Nim แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ”แƒœแƒ˜แƒก แƒ’แƒแƒ›แƒแƒจแƒ•แƒ”แƒ‘แƒ 1.6.0

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

แƒแƒฎแƒแƒš แƒ’แƒแƒ›แƒแƒจแƒ•แƒ”แƒ‘แƒแƒจแƒ˜ แƒจแƒ”แƒกแƒแƒ›แƒฉแƒœแƒ”แƒ•แƒ˜ แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ›แƒแƒ˜แƒชแƒแƒ•แƒก:

  • แƒ“แƒแƒ”แƒ›แƒแƒขแƒ iterable[T] แƒ™แƒšแƒแƒกแƒ˜ แƒ’แƒแƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒขแƒ˜แƒžแƒ˜แƒก แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ˜แƒ—. แƒ—แƒแƒ แƒ’แƒ˜แƒก แƒฏแƒแƒ›แƒ˜[T](a: แƒ’แƒแƒœแƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒแƒ“แƒ˜[T]): T = var แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜: T-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก ai a-แƒจแƒ˜: แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜ += ai แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜แƒก แƒ›แƒขแƒ™แƒ˜แƒชแƒ”แƒ‘แƒ แƒฏแƒแƒ›แƒ˜(แƒ˜แƒแƒขแƒ(3)) == 0 + 1 + 2 # แƒแƒœ 'แƒ˜แƒแƒขแƒ( 3). แƒฏแƒแƒ›แƒ˜'
  • แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ”แƒฅแƒกแƒžแƒ”แƒ แƒ˜แƒ›แƒ”แƒœแƒขแƒฃแƒšแƒ˜ แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ ".effectsOf" แƒแƒœแƒแƒขแƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ”แƒคแƒ”แƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ แƒฉแƒ”แƒ•แƒ˜แƒ—แƒแƒ“ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ’แƒแƒœแƒ˜แƒกแƒแƒ–แƒฆแƒ•แƒ แƒ”แƒ‘แƒ (nimHasEffectsOf): {.แƒ”แƒฅแƒกแƒžแƒ”แƒ แƒ˜แƒ›แƒ”แƒœแƒขแƒฃแƒšแƒ˜: "strictEffects".} else: {.pragma: effectOf.} proc mysort(s: seq; cmp: proc(a, b: T): int) {.effectsOf: cmp. }
  • แƒจแƒ”แƒ›แƒแƒ—แƒแƒ•แƒแƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ˜แƒ›แƒžแƒแƒ แƒขแƒ˜แƒก แƒแƒฎแƒแƒšแƒ˜ แƒกแƒ˜แƒœแƒขแƒแƒฅแƒกแƒ˜ โ€žimport foo {.all.}โ€œ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒจแƒ”แƒ›แƒแƒ˜แƒขแƒแƒœแƒแƒ— แƒแƒ แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒกแƒแƒฏแƒแƒ แƒ, แƒแƒ แƒแƒ›แƒ”แƒ“ แƒ™แƒ”แƒ แƒซแƒ แƒกแƒ˜แƒ›แƒ‘แƒแƒšแƒแƒ”แƒ‘แƒ˜แƒช. แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒžแƒ˜แƒ แƒแƒ“ แƒ•แƒ”แƒšแƒ”แƒ‘แƒ–แƒ” แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒแƒ”แƒ›แƒแƒขแƒ std/importutils แƒ›แƒแƒ“แƒฃแƒšแƒ˜ แƒ“แƒ privateAccess API. แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒ“แƒแƒœ {.all.} แƒ แƒแƒ’แƒแƒ แƒช system2 แƒ˜แƒ›แƒžแƒแƒ แƒขแƒ˜ nil echo system2.ThisIsSystem แƒ˜แƒ›แƒžแƒแƒ แƒขแƒ˜ 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) = แƒ’แƒแƒฃแƒฅแƒ›แƒ”แƒ‘แƒ fn(a = 1): bar1 do: bar2
  • แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ“แƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒฃแƒšแƒ˜ แƒšแƒ˜แƒขแƒ”แƒ แƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ (แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, "-128'bignum'"). func `'big'*(num: cstring): JsBigInt {.importjs: "BigInt(#)".} assert 0xffffffffffffff'big == (1'big shl 64'big) - 1'แƒ“แƒ˜แƒ“แƒ˜
  • แƒจแƒ”แƒ›แƒ“แƒ’แƒ”แƒœแƒ”แƒšแƒ˜ แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒก แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒแƒก โ€žโ€”eval:cmdโ€œ, แƒ แƒแƒ—แƒ แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒ’แƒแƒฃแƒจแƒ•แƒแƒก Nim แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒฎแƒแƒ–แƒ˜แƒ“แƒแƒœ, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, โ€žnim โ€”eval: โ€žecho 1โ€ณ.
  • แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒ˜แƒšแƒ˜ แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒ”แƒ‘แƒ˜ nimscript backend-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.
  • แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒœแƒแƒ“ แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ•แƒ“แƒ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒแƒกแƒ—แƒแƒœ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ™แƒแƒœแƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒก แƒกแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒšแƒแƒ“. แƒ“แƒแƒœแƒ”แƒ แƒ’แƒ˜แƒšแƒ˜ แƒžแƒ”แƒ แƒกแƒแƒœแƒแƒšแƒฃแƒ แƒ˜ แƒจแƒ”แƒ›แƒ“แƒ’แƒ”แƒœแƒ”แƒšแƒ˜ แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜.
  • แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒœแƒแƒ“ แƒ’แƒแƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒ“แƒ "--gc:arc" แƒ“แƒ "--gc:orc" แƒœแƒแƒ’แƒ•แƒ˜แƒก แƒจแƒ”แƒ›แƒ’แƒ แƒแƒ•แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ.
  • แƒงแƒ•แƒ”แƒšแƒ backend-แƒ›แƒ แƒ’แƒแƒแƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒ แƒ™แƒแƒ“แƒ˜แƒก แƒกแƒ˜แƒ–แƒฃแƒกแƒขแƒ” แƒ“แƒ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ แƒ›แƒ—แƒ”แƒšแƒ˜ แƒ แƒ˜แƒชแƒฎแƒ•แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒ›แƒชแƒฃแƒ แƒแƒ•แƒ˜ แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ˜แƒก แƒ แƒ˜แƒชแƒฎแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒกแƒแƒแƒœแƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒšแƒแƒ“.
  • JS, VM แƒ“แƒ nimscript backend-แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒแƒ“แƒแƒ‘แƒ แƒ›แƒแƒ“แƒฃแƒšแƒ”แƒ‘แƒ—แƒแƒœ, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒแƒ“แƒ แƒ” แƒ›แƒฎแƒแƒšแƒแƒ“ C backend-แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ“แƒœแƒ”แƒœ (แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, std/prelude แƒ›แƒแƒ“แƒฃแƒšแƒ˜). แƒ“แƒแƒ“แƒ’แƒ”แƒœแƒ˜แƒšแƒ˜แƒ stdlib แƒ›แƒแƒ“แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ C, JS แƒ“แƒ VM backend-แƒ”แƒ‘แƒ˜แƒ—.
  • แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ Apple Silicon/M1 แƒฉแƒ˜แƒžแƒ˜แƒก, 32-แƒ‘แƒ˜แƒขแƒ˜แƒแƒœแƒ˜ RISC-V, armv8l แƒ“แƒ CROSSOS แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ.
  • แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ›แƒแƒ“แƒฃแƒšแƒ”แƒ‘แƒ˜ std/jsbigints, std/tempfiles แƒ“แƒ std/sysrand. แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜ แƒ’แƒแƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒ”แƒ‘แƒ แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ“แƒ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก, แƒ›แƒแƒ—แƒ”แƒ›แƒแƒขแƒ˜แƒ™แƒ˜แƒก, แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ˜แƒ—แƒ˜, json, jsonutils, os, typetraits, wrapnils, แƒกแƒ˜แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒฐแƒ”แƒจแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ“แƒฃแƒšแƒ”แƒ‘แƒจแƒ˜.

แƒฌแƒงแƒแƒ แƒ: opennet.ru

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ