แž€แžถแžšแž…แŸแž‰แž•แŸ’แžŸแžถแž™แž—แžถแžŸแžถแžŸแžšแžŸแŸแžšแž€แž˜แŸ’แž˜แžœแžทแž’แžธ Nim 1.6.0

แž”แž“แŸ’แž‘แžถแž”แŸ‹แž–แžธแž˜แžฝแž™แž†แŸ’แž“แžถแŸ†แž“แŸƒแž€แžถแžšแžขแž—แžทแžœแžŒแŸ’แžแž“แŸ แž€แžถแžšแž…แŸแž‰แž•แŸ’แžŸแžถแž™แž—แžถแžŸแžถแžŸแžšแžŸแŸแžšแž€แž˜แŸ’แž˜แžœแžทแž’แžธแž”แŸ’แžšแž–แŸแž“แŸ’แž’ Nim 1.6 แžแŸ’แžšแžผแžœแž”แžถแž“แž”แŸ„แŸ‡แž–แžปแž˜แŸ’แž– แžŠแŸ‚แž›แž”แŸ’แžšแžพแž€แžถแžšแžœแžถแž™แžขแž€แŸ’แžŸแžšแž‹แžทแžแžทแžœแž“แŸ’แž แž แžพแž™แžแŸ’แžšแžผแžœแž”แžถแž“แž”แž„แŸ’แž€แžพแžแžŠแŸ„แž™แž—แŸ’แž“แŸ‚แž€แž›แžพ Pascal, C++, Python แž“แžทแž„ Lisp แŸ” แž€แžผแžŠแž”แŸ’แžšแž—แž– Nim แžแŸ’แžšแžผแžœแž”แžถแž“แž…แž„แž€แŸ’แžšแž„แž‡แžถ C, C++, แžฌ JavaScript แžแŸ†แžŽแžถแž„แŸ” แž€แŸ’แžšแŸ„แž™แž˜แž€ แž€แžผแžŠ C/C++ แž›แž‘แŸ’แž’แž•แž›แžแŸ’แžšแžผแžœแž”แžถแž“แž…แž„แž€แŸ’แžšแž„แž‡แžถแžฏแž€แžŸแžถแžšแžŠแŸ‚แž›แžขแžถแž…แž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแž”แžถแž“แžŠแŸ„แž™แž”แŸ’แžšแžพแž€แž˜แŸ’แž˜แžœแžทแž’แžธแž…แž„แž€แŸ’แžšแž„แžŠแŸ‚แž›แž˜แžถแž“ (clang, gcc, icc, Visual C++) แžŠแŸ‚แž›แžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™แžขแŸ’แž“แž€แžŸแž˜แŸ’แžšแŸแž…แž”แžถแž“แž“แžผแžœแž€แžถแžšแžขแž“แžปแžœแžแŸ’แžแž‡แžทแž C แž”แŸ’แžšแžŸแžทแž“แž”แžพแžขแŸ’แž“แž€แž˜แžทแž“แž‚แžทแžแž–แžธแžแž˜แŸ’แž›แŸƒแž“แŸƒแž€แžถแžšแžŠแŸ†แžŽแžพแžšแž€แžถแžšแŸ” แžขแŸ’แž“แž€แž”แŸ’แžšแž˜แžผแž›แžŸแŸ†แžšแžถแž˜แŸ” แžŸแŸ’แžšแžŠแŸ€แž„แž‘แŸ…แž“แžนแž„ Python Nim แž”แŸ’แžšแžพแž€แžถแžšแž…แžผแž›แž”แž“แŸ’แž‘แžถแžแŸ‹แž‡แžถแžŸแž‰แŸ’แž‰แžถแž”แŸ†แž”แŸ‚แž€แž”แŸ’แž›แžปแž€แŸ” แžงแž”แž€แžšแžŽแŸ แž“แžทแž„แžŸแž˜แžแŸ’แžแž—แžถแž–แž€แž˜แŸ’แž˜แžœแžทแž’แžธ Metaprogramming แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แž„แŸ’แž€แžพแžแž—แžถแžŸแžถแž‡แžถแž€แŸ‹แž›แžถแž€แŸ‹แž“แŸƒแžŠแŸ‚แž“ (DSLs) แžแŸ’แžšแžผแžœแž”แžถแž“แž‚แžถแŸ†แž‘แŸ’แžšแŸ” แž›แŸแžแž€แžผแžŠแž‚แž˜แŸ’แžšแŸ„แž„แžแŸ’แžšแžผแžœแž”แžถแž“แž•แŸ’แžแž›แŸ‹แž‡แžผแž“แž€แŸ’แžšแŸ„แž˜แžขแžถแž‡แŸ’แž‰แžถแž”แŸแžŽแŸ’แžŽ MIT แŸ”

แž€แžถแžšแž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแž‚แžฝแžšแžฑแŸ’แž™แž€แžแŸ‹แžŸแž˜แŸ’แž‚แžถแž›แŸ‹แž“แŸ…แž€แŸ’แž“แžปแž„แž€แžถแžšแž…แŸแž‰แž•แŸ’แžŸแžถแž™แžแŸ’แž˜แžธแžšแžฝแž˜แž˜แžถแž“:

  • แž”แžถแž“แž”แž“แŸ’แžแŸ‚แž˜แžแŸ’แž“แžถแž€แŸ‹ iterable [T] แž‡แžถแž˜แžฝแž™แž“แžนแž„แž€แžถแžšแžขแž“แžปแžœแžแŸ’แžแž”แŸ’แžšแž—แŸแž‘แžŸแž˜แŸ’แžšแžถแž”แŸ‹ iterators แŸ” template sum[T](a: iterable[T]): T = var results: T แžŸแž˜แŸ’แžšแžถแž”แŸ‹ ai แž€แŸ’แž“แžปแž„ a: แž›แž‘แŸ’แž’แž•แž› += ai result assert sum(iota(3)) == 0 + 1 + 2 # or 'iota( แŸฃ) แž•แž›แž”แžผแž€
  • แž”แžถแž“แž”แž“แŸ’แžแŸ‚แž˜แž€แžถแžšแž‚แžถแŸ†แž‘แŸ’แžšแž€แžถแžšแž–แžทแžŸแŸ„แž’แž“แŸแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž…แŸ†แžŽแžถแžšแž–แž“แŸ’แž™แž›แŸ‹ ".effectsOf" แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž‡แŸ’แžšแžพแžŸแžšแžพแžŸแž”แŸ‚แž”แž•แŸ‚แž“แŸ” แž“แŸ…แž–แŸแž›แžŠแŸ‚แž›แž”แžถแž“แž€แŸ†แžŽแžแŸ‹(nimHasEffectsOf): {.experimental: "strictEffects"} else: {.pragma: effectsOf.} proc mysort(s: seq; cmp: proc(a, b: T): int) {.effectsOf: cmp. }
  • แžœแžถแž€แŸ’แž™แžŸแž˜แŸ’แž–แž“แŸ’แž’แž“แžถแŸ†แž…แžผแž›แžแŸ’แž˜แžธ โ€œimport foo {.all.}โ€ แžแŸ’แžšแžผแžœแž”แžถแž“แžŸแŸ’แž“แžพแžกแžพแž„ แžŠแŸ‚แž›แžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™แžขแŸ’แž“แž€แž“แžถแŸ†แž…แžผแž›แž˜แžทแž“แžแŸ’แžšแžนแž˜แžแŸ‚แž‡แžถแžŸแžถแž’แžถแžšแžŽแŸˆแž”แŸ‰แžปแžŽแŸ’แžŽแŸ„แŸ‡แž‘แŸ แž”แŸ‰แžปแž“แŸ’แžแŸ‚แž€แŸแž˜แžถแž“แž“แžทแž˜แžทแžแŸ’แžแžŸแž‰แŸ’แž‰แžถแžฏแž€แž‡แž“แž•แž„แžŠแŸ‚แžšแŸ” แžŠแžพแž˜แŸ’แž”แžธแž…แžผแž›แž”แŸ’แžšแžพแžœแžถแž›แžฏแž€แž‡แž“แž“แŸƒแžœแžแŸ’แžแžป แž˜แŸ‰แžผแžŒแžปแž› std/importutils แž“แžทแž„ privateAccess API แžแŸ’แžšแžผแžœแž”แžถแž“แž”แž“แŸ’แžแŸ‚แž˜แŸ” แž–แžธแž”แŸ’แžšแž–แŸแž“แŸ’แž’ {.all.} as system2 import nil echo system2.ThisIsSystem import os {.all.} echo weirdTarget
  • แž”แžถแž“แž”แž“แŸ’แžแŸ‚แž˜แž€แžถแžšแž‚แžถแŸ†แž‘แŸ’แžšแž–แžทแžŸแŸ„แž’แž“แŸแžŸแž˜แŸ’แžšแžถแž”แŸ‹แžŸแž‰แŸ’แž‰แžถแž…แžปแž… แžŠแŸ‚แž›แžขแžถแž…แžแŸ’แžšแžผแžœแž”แžถแž“แž”แŸ’แžšแžพแžŠแžพแž˜แŸ’แž”แžธแžขแž“แžปแžœแžแŸ’แžแžœแžถแž›แžแžถแž˜แžœแž“แŸ’แžแŸ” แž“แžถแŸ†แž…แžผแž› std/json template '.?'(a: JsonNode, b: untyped{ident}): JsonNode = a[astToStr(b)] let j = %*{โ€œa1โ€: {โ€œa2โ€: 10}} แžขแŸ‡แžขแžถแž„ j.?a1.?a2.getInt == แŸกแŸ 
  • แž”แŸ‰แžถแžšแŸ‰แžถแž˜แŸ‰แŸ‚แžแŸ’แžšแž”แž“แŸ’แžแŸ‚แž˜แžขแžถแž…แžแŸ’แžšแžผแžœแž”แžถแž“แž”แž‰แŸ’แž‡แžถแž€แŸ‹แž“แŸ…แž€แŸ’แž“แžปแž„แžขแžถแž‚แžปแž™แž˜แŸ‰แž„แŸ‹แž”แŸ’แž›แžปแž€แŸ” แž‚แŸ†แžšแžผ 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'big
  • แž€แž˜แŸ’แž˜แžœแžทแž’แžธแž…แž„แž€แŸ’แžšแž„แžขแž“แžปแžœแžแŸ’แžแž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถ "--eval: cmd" แžŠแžพแž˜แŸ’แž”แžธแžŠแŸ†แžŽแžพแžšแž€แžถแžšแžŠแŸ„แž™แž•แŸ’แž‘แžถแž›แŸ‹แž“แžผแžœแž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถ Nim แž–แžธแž”แž“แŸ’แž‘แžถแžแŸ‹แž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถ แžงแž‘แžถแž แžšแžŽแŸ 'nim -eval:"echo 1"'แŸ”
  • แž”แžถแž“แž•แŸ’แžแž›แŸ‹แž€แžถแžšแž‚แžถแŸ†แž‘แŸ’แžšแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž”แž„แŸ’แž€แžพแžแž•แŸ’แž“แŸ‚แž€แž”แž“แŸ’แžแŸ‚แž˜แž•แŸ’แž‘แžถแž›แŸ‹แžแŸ’แž›แžฝแž“แžšแž”แžŸแŸ‹แžขแŸ’แž“แž€แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แž˜แŸ’แž˜แžœแžทแž’แžธแžแžถแž„แž€แŸ’แžšแŸ„แž™ nimscript แŸ”
  • แžŸแžถแžšแž€แŸ†แž แžปแžŸแžแŸ’แžšแžผแžœแž”แžถแž“แž–แž„แŸ’แžšแžธแž€แž™แŸ‰แžถแž„แžแŸ’แž›แžถแŸ†แž„ แžŠแžพแž˜แŸ’แž”แžธแž”แž„แŸ’แž แžถแž‰แž”แžšแžทแž”แž‘แžŠแŸ‚แž›แž‘แžถแž€แŸ‹แž‘แž„แž“แžนแž„แž€แŸ†แž แžปแžŸแŸ” แž”แžถแž“แžขแž“แžปแžœแžแŸ’แžแž€แžถแžšแž–แŸ’แžšแž˜แžถแž“แžขแŸ’แž“แž€แž…แž„แž€แŸ’แžšแž„แž•แŸ’แž‘แžถแž›แŸ‹แžแŸ’แž›แžฝแž“แŸ”
  • แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž”แŸ’แžšแžŸแžพแžšแžกแžพแž„แž‚แžฝแžšแžฑแŸ’แž™แž€แžแŸ‹แžŸแž˜แŸ’แž‚แžถแž›แŸ‹แž“แŸƒแžงแž”แž€แžšแžŽแŸแž”แŸ’แžšแž˜แžผแž›แžŸแŸ†แžšแžถแž˜ "--gc:arc" แž“แžทแž„ "--gc:orc" แŸ”
  • แž€แž˜แŸ’แž˜แžœแžทแž’แžธแžแžถแž„แž€แŸ’แžšแŸ„แž™แž‘แžถแŸ†แž„แžขแžŸแŸ‹แž”แžถแž“แž’แŸ’แžœแžพแžฑแŸ’แž™แž”แŸ’แžšแžŸแžพแžšแžกแžพแž„แž“แžผแžœแž—แžถแž–แžแŸ’แžšแžนแž˜แžแŸ’แžšแžผแžœ แž“แžทแž„แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž“แŸƒแž€แžผแžŠแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž‰แŸ‚แž€แž…แŸ†แž“แžฝแž“แž‚แžแŸ‹ แž“แžทแž„แž›แŸแžแž…แŸ†แžŽแžปแž…แžขแžŽแŸ’แžแŸ‚แžแŸ”
  • แž’แŸ’แžœแžพแžฑแŸ’แž™แž”แŸ’แžšแžŸแžพแžšแžกแžพแž„แž“แžผแžœแž—แžถแž–แž†แž”แž‚แŸ’แž“แžถแž“แŸƒแž€แž˜แŸ’แž˜แžœแžทแž’แžธแžแžถแž„แž€แŸ’แžšแŸ„แž™ JS, VM แž“แžทแž„ nimscript แž‡แžถแž˜แžฝแž™แž“แžนแž„แž˜แŸ‰แžผแžŒแžปแž›แžŠแŸ‚แž›แž–แžธแž˜แžปแž“แž”แžถแž“แžŠแŸ†แžŽแžพแžšแž€แžถแžšแžแŸ‚แž‡แžถแž˜แžฝแž™แž•แŸ’แž“แŸ‚แž€แžแžถแž„แž€แŸ’แžšแŸ„แž™ C (แžงแž‘แžถแž แžšแžŽแŸ แž˜แŸ‰แžผแžŒแžปแž› std/prelude) แŸ” แž€แžถแžšแž’แŸ’แžœแžพแžแŸแžŸแŸ’แžแž“แŸƒแž˜แŸ‰แžผแžŒแžปแž› stdlib แž‡แžถแž˜แžฝแž™แž€แž˜แŸ’แž˜แžœแžทแž’แžธแžแžถแž„แž€แŸ’แžšแŸ„แž™ C, JS แž“แžทแž„ VM แžแŸ’แžšแžผแžœแž”แžถแž“แž”แž„แŸ’แž€แžพแžแžกแžพแž„แŸ”
  • แž”แžถแž“แž”แž“แŸ’แžแŸ‚แž˜แž€แžถแžšแž‚แžถแŸ†แž‘แŸ’แžšแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แž“แŸ’แž‘แŸ‡แžˆแžธแž” Apple Silicon/M1, 32-bit RISC-V, armv8l แž“แžทแž„แž”แŸ’แžšแž–แŸแž“แŸ’แž’ CROSSOSแŸ”
  • แž”แžถแž“แž”แž“แŸ’แžแŸ‚แž˜แž˜แŸ‰แžผแžŒแžปแž› std/jsbigints, std/tempfiles แž“แžทแž„ std/sysrand แŸ” แž€แžถแžšแž€แŸ‚แž›แž˜แŸ’แžขแž™แŸ‰แžถแž„แžŸแŸ†แžแžถแž“แŸ‹แžแŸ’แžšแžผแžœแž”แžถแž“แž’แŸ’แžœแžพแžกแžพแž„แž…แŸ†แž–แŸ„แŸ‡แž”แŸ’แžšแž–แŸแž“แŸ’แž’, แž‚แžŽแžทแžแžœแžทแž‘แŸ’แž™แžถ, แž…แŸƒแžŠแž“แŸ’แž™, json, jsonutils, os, typetraits, wrapnils, lists and hashes modulesแŸ”

แž”แŸ’แžšแž—แž–: opennet.ru

แž”แž“แŸ’แžแŸ‚แž˜แž˜แžแžทแž™แŸ„แž”แž›แŸ‹