Eisiúint teanga ríomhchlárúcháin Nim 1.6.0

Tar éis bliana forbartha, foilsíodh scaoileadh na teanga ríomhchláraithe córais Nim 1.6, a úsáideann clóscríobh statach agus a cruthaíodh le súil ar Pascal, C ++, Python agus Lisp. Cuirtear cód foinse Nim le chéile i léiriú C, C++, nó JavaScript. Ina dhiaidh sin, tiomsaítear an cód C/C++ mar chomhad inrite ag baint úsáide as aon tiomsaitheoir atá ar fáil (clang, gcc, icc, Visual C++), a ligeann duit feidhmíocht a bhaint amach gar do C, mura gcuireann tú na costais reatha san áireamh an bailitheoir truflais. Cosúil le Python, úsáideann Nim eangú mar dheighilteoirí bloc. Tacaítear le huirlisí meitea-chláraithe agus cumais chun teangacha a bhaineann go sonrach le fearann ​​(DSLanna) a chruthú. Cuirtear an cód tionscadail ar fáil faoin gceadúnas MIT.

I measc na n-athruithe suntasacha san eisiúint nua tá:

  • Cuireadh an rang itrialach[T] leis le cineál cur i bhfeidhm d'iterators. suim theimpléad[T](a: iterable[T]): T = toradh var: T le haghaidh ai in a: toradh += ai toradh dearbhaigh suim(iota(3)) == 0 + 1 + 2 # nó 'iota( 3). suim'
  • Cuireadh tacaíocht thurgnamhach leis le haghaidh nótaí ".effectsOf" chun éifeachtaí a chur i bhfeidhm go roghnach. nuair a shainmhínítear é(nimHasEffectsOf): {.experimental: "strictEffects".} eile: {.pragma: effectsOf.} proc mysort(s: seq; cmp: proc(a, b: T): int) {.effectsOf: cmp. }
  • Tá comhréir iompórtála nua “allmhairiú foo {.all.}” molta, a cheadaíonn duit ní hamháin siombailí poiblí, ach siombailí príobháideacha a allmhairiú. Chun rochtain a fháil ar réimsí príobháideacha réad, cuireadh an modúl std/allmhairí agus an privateAccess API leis. ón gcóras {.all.} mar chóras2 allmhairiú nil macalla system2.ThisIsSystem import os {.all.} macalla weirdTarget
  • Tacaíocht thurgnamhach breise d’oibreoirí poncanna, ar féidir iad a úsáid chun réimsí dinimiciúla a chur i bhfeidhm. iompórtáil teimpléad std/json '.?'(a: JsonNode, b: untyped{ident}): JsonNode = a[astToStr(b)] lig j = % *{"a1": {"a2": 10}} dearbhú j.?a1.?a2.getInt == 10
  • Is féidir paraiméadair bhreise a shonrú i mblocargóintí. teimpléad fn(a = 1, b = 2, corp1, corp2) = caith fn(a = 1): bar1 do: bar2
  • Tá tacaíocht do litreoirí sainithe ag an úsáideoir curtha i bhfeidhm (mar shampla, "-128'bignum'"). func `'big`*(num: cstring): JsBigInt {.importjs: "BigInt(#)".} dearbhú 0xffffffffffffff'big == (1'big shl 64'big) - 1'big
  • Cuireann an tiomsaitheoir an t-ordú "--eval:cmd" i bhfeidhm chun orduithe Nim a rith go díreach ón líne ordaithe, mar shampla 'nim -eval:" macalla 1"'.
  • Cuireadh tacaíocht ar fáil chun do chuid síntí féin a chruthú don inneall nimscript.
  • Tá teachtaireachtaí earráide méadaithe go mór chun an comhthéacs a bhaineann leis an earráid a thaispeáint. Cuireadh rabhaidh tiomsaitheora saincheaptha i bhfeidhm.
  • Feabhsaíodh feidhmíocht na mbailitheoirí truflais "--gc:arc" agus "--gc:orc" go suntasach.
  • Tá feabhas tagtha ar chruinneas agus ar fheidhmíocht an chóid le haghaidh slánuimhreacha agus uimhreacha snámhphointe a pharsáil ar gach inneall.
  • Comhoiriúnacht fheabhsaithe na n-iarmhíreanna JS, VM agus nimscript le modúil nár oibrigh roimhe seo ach le hinnill C (mar shampla, an modúl std/prelude). Tá tástáil ar mhodúil stdlib le hais C, JS agus VM bunaithe.
  • Tacaíocht bhreise le haghaidh sliseanna Apple Silicon/M1, córais 32-giotán RISC-V, armv8l agus CROSSOS.
  • Modúil curtha leis std/jsbigints, std/tempfiles agus std/sysrand. Tá feabhsuithe suntasacha déanta ar an gcóras, mata, randamach, json, jsonutils, os, typetraits, wrapnils, lists and hashes modúil.

Foinse: oscailtenet.ru

Add a comment