Издање Јулиа Программинг Лангуаге 1.10

Објављено је издање програмског језика Јулиа 1.10, који комбинује такве квалитете као што су високе перформансе, подршка за динамичко куцање и уграђени алати за паралелно програмирање. Синтакса Јулије је блиска МАТЛАБ-у, са неким елементима позајмљеним из Руби-а и Лисп-а. Метода манипулације стринговима подсећа на Перл. Шифра пројекта се дистрибуира под лиценцом МИТ.

Кључне карактеристике језика:

  • Високе перформансе: један од кључних циљева пројекта је постизање перформанси блиских Ц програмима. Јулиа компајлер је заснован на ЛЛВМ пројекту и генерише ефикасан изворни машински код за многе циљне платформе;
  • Подршка за различите парадигме програмирања, укључујући елементе објектно оријентисаног и функционалног програмирања. Стандардна библиотека обезбеђује функције за асинхрони И/О, управљање процесима, евидентирање, профилисање и управљање пакетима, између осталог;
  • Динамичко куцање: Језик не захтева експлицитну дефиницију типова за променљиве, по аналогији са програмским језицима за скриптовање. Подржава интерактивни режим;
  • Опциона могућност експлицитног навођења типова;
  • Синтакса која је одлична за нумеричке прорачуне, научне прорачуне, системе машинског учења и визуелизацију података. Подршка за многе типове нумеричких података и алате за паралелизовање прорачуна.
  • Могућност директног позивања функција из Ц библиотека без додатних слојева.

Главне промене у Јулији 1.10:

  • Нове језичке карактеристике
    • Подразумевано је омогућен нови и побољшани парсер ЈулиаСинтак.јл. Ако треба да се вратите на стари, требало би да подесите променљиву окружења ЈУЛИА_УСЕ_ФЛИСП_ПАРСЕР на 1.
    • Симболи ⥺ (У+297А, \лефтарровсубсет) и ⥷ (У+2977, \лефтарровлесс) сада се могу користити као бинарни оператори са приоритетом стрелице.
  • Промене језика
    • Приликом покретања подређених задатака, локални РНГ (генератор случајних бројева) родитељског задатка више није погођен. Нова шема иницијализације генератора случајних бројева је слична имплементацијама СплитМик и ДотМик.
    • Предложено је ново правило за избор метода које разјашњава тип „Унион{}“ у корист методе дефинисане експлицитно за руковање аргументом типа „Унион{}“.
    • Знак "х бар" ℏ (\хсласх У+210Ф) се сада третира као еквивалент ħ (\хбар У+0127).
    • Макро „@симд” сада има специфичну семантику: дозвољава само преуређивање и одсецање у покретном зарезу уместо омогућавања свих „@фастматх” оптимизација. Ако покренути програми доживе деградацију перформанси због ове промене, тада се претходно понашање може вратити помоћу „@фастматх @симд“.
    • Када се прикаже у праћењу стека методе са кључним речима, текстуални приказ кључних речи је сада поједностављен коришћењем нове макро синтаксе „@Кваргс{кеи1::Типе1, ...}“.
  • Побољшања компајлера/времена извршавања
    • Сакупљач смећа сада врши вишенитну селекцију објеката за одлагање.
    • JITLink је подразумевано омогућен у Linux-системи засновани на aarch64 архитектури при изградњи Јулије са LLVM 15 или новијом верзијом.
    • Процес предкомпилације укључује закључавање пид датотека. Само један јулиа процес истовремено обавља прекомпилацију. Раније су се сви процеси одвијали паралелно и постојала је опасност од оштећења компилацијских кеш датотека због услова трке.
  • Промене параметара командне линије
    • Додата опција "--гцтхреадс", која вам омогућава да одредите колико ће паралелних нити користити сакупљач смећа. Подразумевана вредност је „Н/2“, где је Н број радничких нити („-тхреадс“) које користи Јулија.
  • Изградите системске промене
    • Чворови „СпарсеАрраис“ и „СуитеСпарсе“ су подразумевано искључени из слике система. Основни пакет Јулиа више не садржи библиотеке са ГПЛ лиценцом. Међутим, ове библиотеке су и даље укључене у језик у стандардној бинарној дистрибуцији.
  • Нове функције библиотеке
    • "танпи" израчунава "тан(π*к)" прецизније од "тан(пи*к)".
    • "фоурроот(к)" је дефинисан у Басе.Матх и може се користити за израчунавање четвртог корена од "к". Кратко име за овај метод је Уницоде знак ∜, који се може унети помоћу команде \фоуртхроот.
    • Додате функције "Либц.меммове", "Либц.мемсет" и "Либц.мемцпи", чија функционалност одговара функционалности одговарајућих Ц позива.
    • Додата метода „Басе.испрецомпилед(пкг::ПкгИд)“ која враћа „труе“ ако је пакет већ прекомпајлиран.
  • Опције функције библиотеке
    • „бином(к, к)“ сада подржава нецелобројно „к“.
    • „ЦартесианИндек“ се сада третира као „скалар“ за емитовање.
    • Метод "принтстилед" сада подржава курзив излаз.
    • Методе "парент" и "парентиндицес" сада подржавају тип "СубСтрингс".
    • Метода „реплаце(стринг,паттерн...)“ сада подржава опциони „ИО“ аргумент за излаз у ток уместо да враћа стринг.
    • Метода „стартсвитх“ сада подржава И/О нити.
  • Промене основне библиотеке
    • Од метода „сортперм!” и „делимично сортирање!“ уклонили кључну реч „иницијализовано=труе“, што би могло да доведе до небезбедног понашања.
    • Када се штампају цели бројеви типа „Ратионал“, њихов именилац се сада прескаче у контексту „Ратионал“ откуцаних токова (као што су низови).
  • Менаџер пакета
    • Метода „Пкг.прецомпиле“ сада узима „тајминг“ као кључни аргумент, приказујући информације о времену пре компајлирања за сваки пакет – „Пкг.прецомпиле(тиминг=труе)“.
  • Линеарна алгебра
    • Тип „АбстрацтК“ више није подтип „АбстрацтМатрик“. Штавише, метода "адјоинт(К::АбстрацтК)" више не умотава "К" у тип "Адјоинт", замењујући га са "АдјоинтК", који је сам по себи подтип "АбстрацтК". Ова промена је због чињенице да се типично „АбстрацтК“ инстанце понашају као линеарни оператори засновани на функцијама и матрицама и да им се не може приступити индексом. Поред тога, многи типови "АбстрацтК" могу да раде на векторима/матрицама различитих величина, делујући као матрица са величином која зависи од контекста. Са овом променом, тип "АбстрацтК" сада има добро дефинисан интерфејс, који је детаљно описан у Јулиа документацији.
    • Резултати факторизације више нису умотани у типове омотача „Адјоинт“ и „Транспосе“. Уместо тога, додани су типови „АдјоинтФацторизатион“ и „ТранпосеФацторизатион“, који су сами по себи подтипови „факторизације“.
    • Нове функције "хермитианпарт" и "хермитианпарт!" да пронађе ермитски (истински симетричан) део матрице.
    • Метода "норма" транспоноване подређене матрице типа "АбстрацтМатрик" сада подразумевано враћа норму родитељске матрице, која одговара тренутном понашању за "АбстрацтВецторс".
    • Додате методе за израчунавање сопствених вектора "еиген(А, Б)" и "еигвалс(А, Б)" за случај када је један од А или Б симетричан или Хермитов.
    • Методе „еигвалс/еиген(А, цхолески(Б))“ сада израчунавају генерализоване сопствене вредности (својствене вредности: и сопствени вектори) А и Б преко Цхолескијевог проширења за позитивно одређено Б.
  • Принтф
    • Спецификатори формата сада подржавају динамичку ширину и прецизност, као што су „%*с“ и „%*.*г“.
  • ЗАМЈЕНА
    • Приликом штампања трага стека, дубина одштампаних типова у потписима функција је ограничена да би се избегло превише опсежан излаз.
  • Тест
    • Макро „@тест_брокен“ (или „@тест“ са „брокен=труе“) сада даје грешку ако тестни израз не врати фалсе/труе.
    • Ако постоји грешка при позивању „@тест“ или грешка унутар функције, сада је обезбеђено детаљно праћење стека да би се разумела позиција теста у „@тестсету“.
  • ИнтерацтивеУтилс
    • „цоде_нативе“ и „@цоде_нативе“ сада користе Интел синтаксу уместо АТ&Т.
    • „@тиме_импортс“ сада приказује време извршења „__инит__()“ за увезене модуле.
  • Застареле и подложне уклањању структуре
    • Макро „@пуре“ је застарео. Уместо тога треба користити „Басе.@ассуме_еффецтс :фолдабле“.

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

Купите поуздан хостинг за сајтове са ДДоС заштитом, ВПС ВДС сервере 🔥 Купите поуздан веб хостинг са DDoS заштитом, VPS VDS сервере | ProHoster