Nova versio de la programlingvo Nim 0.20

okazis eldono de la sistemo de programlingvo Nim 0.20.0. La lingvo uzas senmovan tajpadon kaj estis kreita kun Pascal, C++, Python kaj Lisp en menso. Nim fontkodo estas kompilita en C, C++, aŭ JavaScript-reprezentantaron. Poste, la rezulta C/C++-kodo estas kompilita en ruleblan dosieron uzante ajnan disponeblan kompililon (clang, gcc, icc, Visual C++), kio ebligas al vi atingi rendimenton proksime al C, se vi ne konsideras la kostojn de funkciado. la rubkolektisto. Simila al Python, Nim uzas indentaĵon kiel bloklimigilojn. Metaprogramadaj iloj kaj kapabloj por krei domajn-specifajn lingvojn (DSL) estas subtenataj. Projekta kodo provizis sub la MIT-licenco.

La eldono Nim 0.20 povas esti konsiderata kandidato por la unua stabila eldono 1.0, korpigante plurajn kunfunkciebleco-rompantajn ŝanĝojn necesajn por formi la unuan stabilan branĉon kiu transigos la staton de la lingvo. Versio 1.0 estas prezentita kiel stabila, longdaŭra subtena eldono, kiu estos garantiita por konservi malantaŭan kongruecon en la stabiligita parto de la lingvo. Aparte, la kompililo ankaŭ havos eksperimentan reĝimon disponeblan en kiu novaj funkcioj kiuj povas rompi malantaŭan kongruon estos evoluigitaj.

Inter la ŝanĝoj proponitaj en Nim 0.20 estas:

  • "Ne" nun estas ĉiam unara operatoro, t.e. esprimoj kiel "aserti (ne a)" nun estas permesataj kaj nur "aserti ne a" estas permesitaj;
  • Ebligis striktajn kontrolojn por konvertiĝo de entjeroj kaj realaj nombroj ĉe la kompila stadio, t.e. la esprimo "const b = uint16(-1)" nun rezultigos eraron, ĉar -1 ne povas esti konvertita al sensigna entjera tipo;
  • Malpakado de opoj por konstantoj kaj buklovariabloj estas disponigita.
    Ekzemple, nun vi povas uzi taskojn kiel 'const (d, e) = (7, "ok")" kaj "for (x, y) in f";

  • Provizita defaŭlta inicialigo de hashoj kaj tabeloj. Ekzemple, post deklarado "var s: HashSet[int]" vi povas tuj ekzekuti "s.incl(5)", kiu antaŭe kaŭzis eraron;
  • Plibonigitaj erarinformoj por problemoj rilataj al la "kaza" funkciigisto kaj tabelindekso ekster limoj;
  • Ŝanĝi la tabellongon dum ripeto estas malpermesita.

fonto: opennet.ru

Aldoni komenton