Ntọhapụ asụsụ mmemme Nim 1.6.0

Mgbe otu afọ nke mmepe gasịrị, e bipụtara ntọhapụ nke asụsụ mmemme Nim 1.6, nke na-eji ederede static ma jiri anya mee ya na Pascal, C++, Python na Lisp. Achịkọtara koodu mmalite Nim ka ọ bụrụ ihe nnọchite C, C++ ma ọ bụ Javascript. Mgbe nke ahụ gasịrị, a na-achịkọta koodu C / C ++ na-esi na ya pụta n'ime faịlụ a na-arụ ọrụ site na iji nchịkọta ọ bụla dị (clang, gcc, icc, Visual C ++), nke na-enye gị ohere ịrụ ọrụ dị nso C, ma ọ bụrụ na ị naghị echebara ụgwọ nke ịgba ọsọ. onye na-ekpofu ihe. Yiri Python, Nim na-eji indentation dị ka mgbochi mgbochi. A na-akwado ngwaọrụ metaprogramming na ike maka imepụta asụsụ ndị akọwapụtara ngalaba (DSL). Enyere koodu oru ngo n'okpuru ikikere MIT.

Mgbanwe ndị pụtara ìhè na mwepụta ọhụrụ a gụnyere:

  • Agbakwunyere klaasị iterable[T] nwere ụdị mmejuputa iwu maka ndị na-emegharị ihe. template nchikota[T](a: iterable[T]): T = var results: T for ai in a: result += ai result assert sum(iota(3)) == 0 + 1 + 2 # ma ọ bụ 'iota( 3) ngụkọta'
  • Nkwado nnwale agbakwunyere maka nkọwa ".effectsOf" maka itinye mmetụta na-ahọrọ. mgbe a kọwapụtara (nimHasEffectsOf): {.experimental: "strictEffects".} ọzọ: {.pragma: effectsOf.} proc mysort(s: seq; cmp: proc (a, b: T): int) {.effectsOf: cmp. }
  • Atụpụtala syntax mbubata ọhụrụ “import foo {.all.}” na-enye gị ohere ibubata ọ bụghị naanị ọha, kamakwa akara nzuzo. Iji nweta mpaghara ihe nzuzo, agbakwunyela std/importutils modul na API Access API. si sistemu {.all.} dị ka system2 mbubata nil echo system2. ThisIsSystem import os {.all.} echo weirdTarget
  • Nkwado nnwale agbakwunyere maka ndị na-arụ ọrụ ntụpọ, nke enwere ike iji mejuputa mpaghara dị ike. bubata std/json template '.?'(a: JsonNode, b: edeghị ede{ident}): JsonNode = a[astToStr(b)] ka j = %*{“a1”: {“a2”: 10}} kwuputa j.?a1.?a2.getInt == 10
  • Enwere ike ịkọwapụta paramita ndị ọzọ na arụmụka ngọngọ. template fn (a = 1, b = 2, body1, body2) = tụfuo fn (a = 1): bar1 eme: bar2
  • E tinyela nkwado maka mkpụrụedemede akọwapụtara nke onye ọrụ (dịka ọmụmaatụ, "-128'bignum"). func `'big`*(nọmba: cstring): JsBigInt {.importjs: "BigInt(#)"
  • Onye nchịkọta ahụ na-emejuputa iwu "-eval:cmd" iji mee iwu Nim ozugbo site na ahịrị iwu, dịka ọmụmaatụ 'nim —eval:"echo 1″'.
  • Enyere nkwado maka ịmepụta ndọtị gị maka azụ azụ nimscript.
  • A gbasaala ozi mperi nke ukwuu iji gosi ọnọdụ metụtara njehie ahụ. Ịdọ aka ná ntị ndị nchịkọta omenala emejuputa atumatu.
  • Nrụpụta nke ọma nke ndị na-anakọta mkpofu "--gc:arc" na "--gc:orc".
  • All backend emelitela izi ezi na arụmọrụ nke koodu maka ntule ọnụọgụgụ na ọnụọgụ n'elu mmiri.
  • Ndakọrịta emelitere nke JS, VM na nimscript nwere modul ndị na-arụbu naanị na C backend (dịka ọmụmaatụ, modul std/prelude). Nnwale nke modul stdlib nwere nkwado azụ C, JS na VM.
  • Nkwado agbakwunyere maka mgbawa Apple Silicon/M1, 32-bit RISC-V, armv8l na sistemụ CROSSOS.
  • Modul agbakwunyere std/jsbigints, std/tempfiles na std/sysrand. Emeela nkwalite dị ukwuu na sistemụ, mgbakọ na mwepụ, random, json, jsonutils, os, typetraits, wrapnils, listi na modul hashes.

isi: opennet.ru

Tinye a comment