Fa'asa'olotoina o le gagana fa'akomepiuta Nim 1.6.0

I le maeʻa ai o le tausaga o le atinaʻe, na faʻasalalauina le faʻalauiloaina o le polokalame polokalame polokalame Nim 1.6, lea e faʻaogaina ai le faʻaogaina o le static ma faia ma le mata i luga o Pascal, C ++, Python ma Lisp. Nim source code o lo'o tu'ufa'atasia i se fa'atusa C, C++, po'o le JavaScript. Mulimuli ane, o le taunuuga C / C ++ code ua tuʻufaʻatasia i totonu o se faila faila e faʻaaoga ai soʻo se tuʻufaʻatasiga avanoa (clang, gcc, icc, Visual C ++), lea e mafai ai e oe ona ausia le faʻatinoga latalata ile C, pe afai e te le amanaʻia tau o le tamoe. o le ao lapisi. E tutusa ma le Python, e faʻaogaina e Nim le faʻailoga e fai ma poloka poloka. Metaprogramming meafaigaluega ma gafatia mo le fatuina o gagana faʻapitoa (DSLs) e lagolagoina. Ole tulafono ole poloketi o lo'o tu'uina atu ile laisene MIT.

O suiga iloga i le fa'asalalauga fou e aofia ai:

  • Faʻaopoopo le iterable [T] vasega faʻatasi ai ma se faʻatinoga faʻatulagaina mo le faʻasologa. template sum[T](a: iterable[T]): T = var i'uga: T mo ai i a: i'uga += ai i'uga fa'amautu aofa'i(iota(3)) == 0 + 1 + 2 # po'o 'iota( 3).sum'
  • Fa'aopoopoina le lagolago fa'ata'ita'i mo fa'amatalaga ".effectsOf" mo le fa'aogaina o a'afiaga. pe a faamatalaina(nimHasEffectsOf): {.experimental: "strictEffects".} isi: {.pragma: effectsOf.} proc mysort(s: seq; cmp: proc(a, b: T): int) {.effectsOf: cmp. }
  • O se fa'asologa fou o le fa'aulufale mai o le “import foo {.all.}” ua fa'ailoa mai, e mafai ai ona e fa'aulufale mai e le gata mo tagata lautele, ae fa'apea fo'i fa'ailoga patino. Ina ia maua avanoa tumaoti o mea faitino, ua faaopoopo le std/importutils module ma le PrivateAccess API. mai le faiga {.all.} pei o le system2 import nil echo system2.ThisIsSystem import os {.all.} echo weirdTarget
  • Fa'aopoopoina le lagolago fa'ata'ita'i mo tagata fa'aoga togi, lea e mafai ona fa'aoga e fa'atino ai matā'upu malosi. fa'aulufale mai std/json template '.?'(a: JsonNode, b: untyped{ident}): JsonNode = a[astToStr(b)] tuu j = %*{“a1”: {“a2”: 10}} fa'ailoa j.?a1.?a2.getInt == 10
  • E mafai ona fa'amaoti fa'ailoga fa'aopoopo i finauga poloka. mamanu fn(a = 1, b = 2, tino1, tino2) = lafoai fn(a = 1): pa1 fai: pa2
  • Ua fa'atinoina le lagolago mo fa'amatalaga fa'apitoa e fa'aaogaina (mo se fa'ata'ita'iga, "-128'bignum'"). func `'tele`*(num: cstring): JsBigInt {.importjs: "BigInt(#)".} fa'ailoa 0xffffffffffffff'big == (1'big shl 64'big) - 1'tele
  • O lo'o fa'atinoina e le tagata tu'ufa'atasi le fa'atonuga "—eval: cmd" e fa'atino sa'o ai fa'atonuga a Nim mai le laina fa'atonu, mo se fa'ata'ita'iga 'nim —eval:”echo 1″‘.
  • Tuuina atu le lagolago mo le fatuina o au lava faʻaopoopoga mo le nimscript backend.
  • Ua matua fa'alauteleina fe'au sese e fa'aalia ai le tala e feso'ota'i ma le mea sese. Fa'atino lapataiga tu'ufa'atasi masani.
  • Ua matua'i fa'aleleia atili le fa'atinoga a le 'au lapisi "--gc:arc" ma le "--gc:orc".
  • O pito pito i tua uma ua faʻaleleia le saʻo ma le faʻatinoga o code mo le faʻavasegaina o numera ma numera faʻafefe.
  • Faʻaleleia le fesoʻotaʻiga o le JS, VM ma le nimscript backends ma modules sa naʻo le C backend na galue (mo se faʻataʻitaʻiga, le std/prelude module). Suʻega o stdlib modules ma C, JS ma VM backends ua faʻavaeina.
  • Fa'aopoopo le lagolago mo Apple Silicon/M1 chip, 32-bit RISC-V, armv8l ma CROSSOS system.
  • Fa'aopoopo modules std/jsbigints, std/tempfiles ma std/sysrand. Ua fa'aleleia atili le faiga, numera, random, json, jsonutils, os, typetraits, wrapnils, lists and hashes modules.

puna: opennet.ru

Faaopoopo i ai se faamatalaga