Ko Nim te tuku reo hootaka 1.6.0

I muri i te tau o te whakawhanaketanga, i whakaputaina te whakaputanga o te reo hootaka punaha Nim 1.6, e whakamahi ana i te patopato pateko me te hanga ma te titiro ki a Pascal, C++, Python me Lisp. Ka whakahiatohia te waehere puna Nim ki te tohu C, C++, JavaScript ranei. I muri mai, ka whakahiatohia te waehere C/C++ ki roto i te konae ka taea te whakamahi ma te whakamahi i tetahi kaitoi e waatea ana (clang, gcc, icc, Visual C++), ka taea e koe te whakatutuki i nga mahi tata ki te C, mena kaore koe e aro ki nga utu o te whakahaere. te kaikohi paru. He rite ki a Python, ka whakamahia e Nim te nuku hei kaiwehe paraka. Ka tautokohia nga taputapu metaprogramming me nga kaha mo te hanga reo motuhake-rohe (DSLs). Ka whakaratohia te waehere kaupapa i raro i te raihana MIT.

Ko nga huringa rongonui i roto i te tukunga hou ko:

  • I taapirihia te akomanga [T] ka taea te whakamahi me te momo whakatinanatanga mo nga kaitoro. tātauira whakarāpopoto[T](a: iterable[T]): T = var hua: T mo ai i roto i te: hua += ai hua whakaū i te tapeke(iota(3)) == 0 + 1 + 2 # ranei 'iota( 3).sum'
  • Kua taapirihia he tautoko whakamatautau mo nga korero ".effectsOf" mo te whakauru i nga paanga. ina tautuhia(nimHasEffectsOf): {.experimental: "strictEffects".} atu: {.pragma: effectsOf.} proc mysort(s: seq; cmp: proc(a, b: T): int) {.effectsOf: cmp. }
  • He wetereo kawemai hou “import foo {.all.}” kua tohua, ka taea e koe te kawemai ehara i te mea mo te marea anake, engari he tohu motuhake ano hoki. Hei uru atu ki nga mara motuhake o nga taonga, kua taapirihia te std/importutils module me te PrivateAccess API. mai i te punaha {.katoa.} hei punaha2 kawemai nil echo system2.ThisIsSystem kawemai os {.all.} echo weirdTarget
  • Kua taapirihia he tautoko whakamatautau mo nga kaiwhakahaere ira, ka taea te whakamahi hei whakatinana i nga mara hihiri. kawemai i te tauira std/json '.?'(a: JsonNode, b: untyped{ident}): JsonNode = a[astToStr(b)] kia j = %*{“a1”: {“a2”: 10}} kii j.?a1.?a2.getInt == 10
  • Ka taea te tautuhi i etahi atu tawhā ki nga tohenga paraka. tauira fn(a = 1, b = 2, tinana1, tinana2) = maka fn(a = 1): pae1 mahi: pae2
  • Kua whakatinanahia te tautoko mo nga kupu kua tautuhia e te kaiwhakamahi (hei tauira, "-128'bignum'"). func `'nui`*(num: cstring): JsBigInt {.importjs: "BigInt(#)".} whakaū 0xffffffffffffffff'big == (1'big shl 64'nui) - 1'nui
  • Ka whakatinanahia e te kaitoi te tono “—eval:cmd” ki te whakahaere tika i nga whakahau Nim mai i te raina whakahau, hei tauira 'nim —eval:"echo 1″".
  • He tautoko mo te hanga i a koe ake toronga mo te nimscript backend.
  • Kua tino whakawhānuihia nga karere hapa hei whakaatu i te horopaki e pa ana ki te hapa. Kua whakatinanahia nga whakatupato whakahiato ritenga.
  • Kua tino pai ake te mahi a nga kaikohi paru "--gc:arc" me "--gc:orc".
  • Ko nga pito o muri katoa kua pai ake te tika me te mahi o te waehere mo te wetewete tauoti me nga tau ira maanu.
  • Kua pai ake te hototahitanga o JS, VM me te nimscript backends me nga waahanga i mahi noa me te C backend (hei tauira, te std/prelude module). Ko te whakamatautau i nga waahanga stdlib me nga tuara C, JS me VM kua whakatauhia.
  • He tautoko taapiri mo te maramara Apple Silicon/M1, 32-bit RISC-V, armv8l me nga punaha CROSSOS.
  • Ko nga waahanga taapiri std/jsbigints, std/tempfiles me std/sysrand. He nui nga whakapainga ake ki te punaha, te pangarau, te matapōkere, te json, te jsonutils, te os, te momotuhi, te takai, te raarangi me nga waahanga tohu.

Source: opennet.ru

Tāpiri i te kōrero