Itusilẹ ede siseto Nim 1.6.0

Lẹhin ọdun kan ti idagbasoke, itusilẹ ti ede siseto eto Nim 1.6 ni a tẹjade, eyiti o nlo titẹ aimi ati pe a ṣẹda pẹlu oju lori Pascal, C ++, Python ati Lisp. Koodu orisun Nim ti wa ni akojọpọ sinu C, C++, tabi aṣoju JavaScript. Lẹhinna, koodu C / C ++ ti o yọrisi ti wa ni akopọ sinu faili ti o ṣiṣẹ ni lilo eyikeyi akojọpọ ti o wa (clang, gcc, icc, Visual C ++), eyiti o fun ọ laaye lati ṣaṣeyọri iṣẹ ṣiṣe ti o sunmọ C, ti o ko ba ṣe akiyesi awọn idiyele ti ṣiṣiṣẹ. oludoti. Iru si Python, Nim nlo indentation bi idinamọ. Awọn irinṣẹ siseto ati awọn agbara fun ṣiṣẹda awọn ede kan pato-ašẹ (DSLs) ni atilẹyin. Koodu ise agbese ti pese labẹ iwe-aṣẹ MIT.

Awọn ayipada pataki ninu itusilẹ tuntun pẹlu:

  • Fi kun iteerable [T] kilasi pẹlu iru imuse fun iterators. awoṣe apao[T](a: iterable[T]): T = var esi: T fun ai ni a: esi += ai esi assert apao (iota(3)) == 0 + 1 + 2 # tabi 'iota( 3) apao'
  • Ṣe afikun atilẹyin esiperimenta fun awọn alaye “.effectsOf” fun yiyan awọn ipa yiyan. nigba ti asọye (nimHasEffectsOf): {.experimental: "strictEffects".} miran: {.pragma: effectsOf.} proc mysort(s: seq; cmp: proc (a, b: T): int) {.effectsOf: cmp. }
  • A ti dabaa sintasi agbewọle agbewọle tuntun “gba wọle foo {.all.}”, gbigba ọ laaye lati gbe wọle kii ṣe gbogbo eniyan nikan, ṣugbọn tun awọn aami ikọkọ. Lati wọle si awọn aaye ikọkọ ti awọn nkan, module std/importutils ati ikọkọAccess API ti ti ṣafikun. lati eto {.all.} bi system2 gbe wọle nil echo system2. ThisIsSystem import os {.all.} iwoyi weirdTarget
  • Atilẹyin esiperimenta ti a ṣafikun fun awọn oniṣẹ aami, eyiti o le ṣee lo lati ṣe awọn aaye ti o ni agbara. agbewọle std/json awoṣe '.?'(a: JsonNode, b: untyped{ident}): JsonNode = a[astToStr(b)] let j = %*{“a1”: {“a2”: 10}} assert j.?a1.?a2.getInt == 10
  • Awọn paramita afikun le jẹ pato ni awọn ariyanjiyan Àkọsílẹ. awoṣe fn (a = 1, b = 2, body1, body2) = danu fn (a = 1): bar1 ṣe: bar2
  • Atilẹyin fun awọn itumọ ọrọ gangan olumulo ti jẹ imuse (fun apẹẹrẹ, "-128'bignum"). func `'big`*(nom: cstring): JsBigInt {.importjs: "BigInt(#)" .
  • Olupilẹṣẹ n ṣe imuse aṣẹ “—eval: cmd” lati ṣiṣẹ awọn aṣẹ Nim taara lati laini aṣẹ, fun apẹẹrẹ 'nim —eval:”echo 1″'.
  • Ti pese atilẹyin fun ṣiṣẹda awọn amugbooro tirẹ fun ẹhin nimscript.
  • Awọn ifiranšẹ aṣiṣe ti gbooro pupọ lati ṣe afihan ọrọ-ọrọ ti o ni nkan ṣe pẹlu aṣiṣe naa. Awọn ikilọ olupilẹṣẹ aṣa ti a ṣe.
  • Imudara si pataki ti awọn “--gc:arc” ati “--gc:orc” awọn agbo-idọti.
  • Gbogbo awọn ẹhin ẹhin ti ṣe ilọsiwaju deede ati iṣẹ ti koodu fun sisọ awọn odidi ati awọn nọmba aaye lilefoofo.
  • Ibaramu ilọsiwaju ti JS, VM ati nimscript backends pẹlu awọn modulu ti o ṣiṣẹ tẹlẹ nikan pẹlu C backend (fun apẹẹrẹ, module std/prelude). Idanwo awọn modulu stdlib pẹlu C, JS ati awọn ẹhin VM ti ni idasilẹ.
  • Fi kun support fun Apple Silicon/M1 ërún, 32-bit RISC-V, armv8l ati CROSSOS awọn ọna šiše.
  • Awọn modulu ti a ṣafikun std/jsbigints, std/tempfiles ati std/sysrand. Awọn ilọsiwaju pataki ni a ti ṣe si eto, mathimatiki, ID, json, jsonutils, OS, typetraits, wrapnils, lists and hashes modules.

orisun: opennet.ru

Fi ọrọìwòye kun