Sakin Harshen shirye-shiryen Nim 1.6.0

Bayan shekara guda na ci gaba, an buga yaren shirye-shiryen tsarin Nim 1.6, wanda ke amfani da rubutu a tsaye kuma an ƙirƙira shi da ido akan Pascal, C++, Python da Lisp. An haɗa lambar tushen Nim zuwa C, C++, ko wakilcin JavaScript. Bayan haka, an haɗa lambar C / C ++ da aka samu a cikin fayil ɗin da za a iya aiwatarwa ta amfani da kowane mai tarawa (clang, gcc, icc, Visual C ++), wanda ke ba ku damar cimma aiki kusa da C, idan ba ku yi la’akari da farashin aiki ba. mai shara. Mai kama da Python, Nim yana amfani da indentation azaman toshe iyaka. Ana tallafawa kayan aikin metaprogramming da damar don ƙirƙirar takamaiman harsunan yanki (DSLs). An bayar da lambar aikin a ƙarƙashin lasisin MIT.

Manyan canje-canje a cikin sabon sakin sun haɗa da:

  • An ƙara ajin mai iya jujjuyawar [T] tare da nau'in aiwatarwa don masu maimaitawa. template sum[T](a: iterable[T]): T = var sakamako: T don ai in a: result += ai result assert sum(iota(3)) == 0 + 1 + 2 # ko 'iota( 3)
  • Ƙara goyan bayan gwaji don bayanan ".effectsOf" don zaɓin amfani da tasiri. lokacin da aka ayyana(nimHasEffectsOf): {.gwaji: "strictEffects".} wasu: {.pragma: effectsOf.} proc mysort(s: seq; cmp: proc (a, b: T): int) {.effectsOf: cmp. }
  • An gabatar da sabon tsarin shigo da “shigo da foo {.all.}”, yana ba ku damar shigo da ba kawai na jama'a ba, har da alamomin sirri. Don samun dama ga filayen abubuwa masu zaman kansu, an ƙara std/importutils module da API Access API. daga tsarin {.all.} azaman system2 shigo da nil echo system2. ThisIsSystem import os {.all.} echo weirdTarget
  • Ƙara goyan bayan gwaji don masu aiki da digo, waɗanda za a iya amfani da su don aiwatar da filaye masu ƙarfi. shigo da samfurin std/json '.?'(a: JsonNode, b: untyped{ident}): JsonNode = a[astToStr(b)] bari j = %*{“a1”: {“a2”: 10}} tabbatarwa j.?a1.?a2.getInt == 10
  • Ana iya ƙayyade ƙarin sigogi a cikin toshe muhawara. samfuri fn (a = 1, b = 2, body1, body2) = jefar fn (a = 1): bar1 yi: bar2
  • An aiwatar da tallafi don ƙayyadaddun bayanan mai amfani (misali, "-128'bignum"). func `'big`*(lamba: cstring): JsBigInt {.importjs: "BigInt(#)" .
  • Mai tarawa yana aiwatar da umarnin "-eval:cmd" don gudanar da umarnin Nim kai tsaye daga layin umarni, misali 'nim -eval:"echo 1"'.
  • Bayar da goyan baya don ƙirƙirar abubuwan haɓaka naku don ƙarshen nimscript.
  • An fadada saƙonnin kuskure sosai don nuna mahallin da ke da alaƙa da kuskuren. An aiwatar da gargaɗin mai tarawa na al'ada.
  • Mahimman ingantattun ayyuka na "-gc:arc" da "--gc:orc" masu tara shara.
  • Duk masu goyan baya sun inganta daidaito da aikin lamba don tantance lambobi da lambobi masu iyo.
  • Ingantattun dacewa na JS, VM da nimscript na baya tare da kayayyaki waɗanda a baya kawai suke aiki tare da backend C (misali, std/prelude module). An kafa gwajin samfuran stdlib tare da C, JS da VM.
  • Ƙara tallafi don guntu Silicon/M1, 32-bit RISC-V, armv8l da tsarin CROSSOS.
  • Abubuwan da aka ƙara std/jsbigints, std/tempfiles da std/sysrand. An sami ci gaba mai mahimmanci ga tsarin, lissafi, bazuwar, json, jsonutils, os, nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'i nau'i nau'i nau'i nau'i nau'i nau'i nau'i nau'i nau'i nau'i nau'i nau'i nau'i nau'i nau'i nau'i) nau'i na math, jsontils, jsontils, os, typetraits, wrapnils, lists and hashes.

source: budenet.ru

Add a comment