Ним програмски језик издање 1.6.0

Након годину дана развоја, објављено је издање системског програмског језика Ним 1.6 који користи статичко куцање и креиран је с оком на Пасцал, Ц++, Питхон и Лисп. Ним изворни код се компајлира у Ц, Ц++ или ЈаваСцрипт репрезентацију. Након тога, резултујући Ц/Ц++ код се компајлира у извршну датотеку помоћу било ког доступног компајлера (цланг, гцц, ицц, Висуал Ц++), што вам омогућава да постигнете перформансе блиске Ц, ако не узмете у обзир трошкове покретања сакупљач смећа. Слично Питхон-у, Ним користи увлачење као граничнике блокова. Подржани су алати за метапрограмирање и могућности за креирање језика специфичних за домен (ДСЛ). Шифра пројекта је обезбеђена под лиценцом МИТ-а.

Значајне промене у новом издању укључују:

  • Додата је итерабле[Т] класа са имплементацијом типа за итераторе. шаблон сум[Т](а: итерабле[Т]): Т = вар резултат: Т за аи у а: резултат += аи резултат ассерт сум(иота(3)) == 0 + 1 + 2 # или 'иота( 3).сума'
  • Додата експериментална подршка за „.еффецтсОф“ напомене за селективну примену ефеката. када је дефинисан(нимХасЕффецтсОф): {.екпериментал: "стрицтЕффецтс".} елсе: {.прагма: еффецтсОф.} проц мисорт(с: сек; цмп: проц(а, б: Т): инт) {.еффецтсОф: цмп. }
  • Предложена је нова синтакса увоза „импорт фоо {.алл.}“, која вам омогућава да увозите не само јавне, већ и приватне симболе. За приступ приватним пољима објеката, додати су стд/импортутилс модул и приватеАццесс АПИ. из система {.алл.} ас систем2 импорт нил ецхо систем2.ТхисИсСистем импорт ос {.алл.} ецхо веирдТаргет
  • Додата експериментална подршка за операторе тачака, који се могу користити за имплементацију динамичких поља. импорт стд/јсон шаблон '.?'(а: ЈсонНоде, б: унтипед{идент}): ЈсонНоде = а[астТоСтр(б)] нека ј = %*{“а1”: {“а2”: 10}} ассерт ј.?а1.?а2.гетИнт == 10
  • Додатни параметри се могу специфицирати у аргументима блока. шаблон фн(а = 1, б = 2, тело1, тело2) = одбаци фн(а = 1): бар1 уради: бар2
  • Имплементирана је подршка за кориснички дефинисане литерале (на пример, "-128'бигнум'"). фунц `'биг`*(нум: цстринг): ЈсБигИнт {.импортјс: "БигИнт(#)".} ассерт 0кфффффффффффффф'биг == (1'биг схл 64'биг) - 1'биг
  • Компајлер имплементира команду "--евал:цмд" за директно покретање Ним команди из командне линије, на пример 'ним -евал:"ецхо 1"'.
  • Обезбеђена подршка за креирање сопствених екстензија за нимсцрипт бацкенд.
  • Поруке о грешци су знатно проширене да би приказале контекст повезан са грешком. Имплементирана прилагођена упозорења компајлера.
  • Значајно побољшане перформансе сакупљача смећа "--гц:арц" и "--гц:орц".
  • Сви бацкендови су побољшали тачност и перформансе кода за рашчлањивање целих бројева и бројева са покретним зарезом.
  • Побољшана компатибилност ЈС, ВМ и нимсцрипт позадина са модулима који су раније радили само са позадином Ц (на пример, стд/прелуде модул). Установљено је тестирање стдлиб модула са Ц, ЈС и ВМ позадином.
  • Додата подршка за Аппле Силицон/М1 чип, 32-битни РИСЦ-В, армв8л и ЦРОССОС системе.
  • Додати модули стд/јсбигинтс, стд/темпфилес и стд/сисранд. Значајна побољшања су направљена у системским, математичким, рандом, јсон, јсонутилс, ос, типетраитс, врапнилс, листама и хеш модулима.

Извор: опеннет.ру

Додај коментар