Famoahana ny fiteny fandaharana Nim 1.6.0

Taorian'ny taona fampandrosoana dia navoaka ny famoahana ny fiteny fandaharana Nim 1.6, izay mampiasa fanoratana static ary noforonina miaraka amin'ny maso amin'ny Pascal, C ++, Python ary Lisp. Ny kaody loharano Nim dia natambatra ho solontena C, C++, na JavaScript. Avy eo, ny kaody C / C ++ dia natambatra ho rakitra azo ampiasaina amin'ny alΓ lan'ny compiler misy (clang, gcc, icc, Visual C ++), izay ahafahanao manatratra ny fampisehoana akaiky ny C, raha tsy raisinao ny vidin'ny fampandehanana. ny mpanangona fako. Mitovy amin'ny Python, i Nim dia mampiasa ny indentation ho mpanafika sakana. Ny fitaovana sy ny fahaiza-manao metaprogramming amin'ny famoronana fiteny manokana (DSL) dia tohana. Ny kaody tetikasa dia omena eo ambanin'ny lisansa MIT.

Ny fiovana miavaka amin'ny famoahana vaovao dia ahitana:

  • Nampiana ny kilasy iterable [T] miaraka amin'ny karazana fampiharana ho an'ny iterators. template sum[T](a: iterable[T]): T = var result: T ho an'ny ai in a: result += ai result assert sum(iota(3)) == 0 + 1 + 2 # or 'iota( 3).sum'
  • Fanampiana andrana nampiana ho an'ny fanamarihana ".effectsOf" ho an'ny fampiharana fantenana vokatry. rehefa voafaritra(nimHasEffectsOf): {.experimental: "strictEffects".} hafa: {.pragma: effectsOf.} proc mysort(s: seq; cmp: proc(a, b: T): int) {.effectsOf: cmp. }
  • Nisy fehezanteny fanafarana vaovao β€œimport foo {.all.}” natolotra, izay ahafahanao manafatra marika tsy ho an'ny daholobe ihany, fa koa marika manokana. Mba hidirana amin'ny sehatra tsy miankina amin'ny zavatra, dia nampiana ny module std/importutils sy ny PrivateAccess API. avy amin'ny rafitra {.all.} toy ny system2 import nil echo system2.ThisIsSystem import os {.all.} echo weirdTarget
  • Fanampiana andrana fanampiny ho an'ny mpandraharaha dot, izay azo ampiasaina hampiharana saha mavitrika. import std/json template '.?'(a: JsonNode, b: untyped{ident}): JsonNode = a[astToStr(b)] avelao j = %*{β€œa1”: {β€œa2”: 10}} manamafy j.?a1.?a2.getInt == 10
  • Ireo masontsivana fanampiny dia azo faritana amin'ny tohan-kevitra sakana. mΓ΄dely fn(a = 1, b = 2, body1, body2) = esory fn(a = 1): bar1 do: bar2
  • Napetraka ny fanohanana ireo litera voafaritry ny mpampiasa (ohatra, "-128'bignum'"). func `'big`*(num: cstring): JsBigInt {.importjs: "BigInt(#)".} assert 0xffffffffffffff'big == (1'big shl 64'big) - 1'big
  • Ny compiler dia mampihatra ny baiko "β€”eval: cmd" mba hampandehanana mivantana ny baiko Nim avy amin'ny baiko, ohatra 'nim -eval:"echo 1β€³'.
  • Nanome fanohanana amin'ny famoronana fanitarana anao manokana ho an'ny backend nimscript.
  • Ny hafatra diso dia nitarina be mba hampisehoana ny teny manodidina mifandray amin'ny fahadisoana. Nampiharina fampitandremana compiler manokana.
  • Fahombiazan'ireo mpanangom-pako "--gc:arc" sy "--gc:orc" no nanatsara kokoa.
  • Ny backends rehetra dia nanatsara ny fahitsiana sy ny fahombiazan'ny kaody ho an'ny famafazana integer sy isa mitsingevana.
  • Nohatsaraina ny fampifanarahana ny JS, VM ary ny backends nimscript miaraka amin'ny maody izay niasa tamin'ny backend C teo aloha (ohatra, ny maody std/prelude). Ny fitsapana ny maody stdlib miaraka amin'ny backend C, JS ary VM dia napetraka.
  • Fanohanana fanampiny ho an'ny chip Apple Silicon/M1, 32-bit RISC-V, armv8l ary rafitra CROSSOS.
  • Nampiana modules std/jsbigints, std/tempfiles ary std/sysrand. Nisy fanatsarana lehibe natao tamin'ny rafitra, matematika, kisendrasendra, json, jsonutils, os, typetraits, wrapnils, lists ary hashes modules.

Source: opennet.ru

Add a comment