Објављена је нова верзија компајлера за програмски језик Вала 0.50.4. Грана за дугорочну подршку (ЛТС) Вала 0.48.14 (упакована за Убунту 18.04) и експериментална грана Вала 0.51.3 су такође ажуриране.
Језик Вала је објектно оријентисани програмски језик који обезбеђује синтаксу сличну Ц# или Јава. Гобјецт (Глиб Објецт Систем) се користи као објектни модел. Управљање меморијом се врши власништвом (везе у власништву/непоседовању) или коришћењем АРЦ-а (замена деструктора и декремента бројача референци објеката у фази компилације).
Језик има подршку за интроспекцију, ламбда функције, интерфејсе, делегате и затварања, сигнале и слотове, изузетке, својства, типове који нису нулти, закључивање типа за локалне варијабле. Комплет долази са великим бројем веза за библиотеке у Ц (вала-гирс, вала-ектра-вапис). Вала програми се преводе у Ц репрезентацију и затим компајлирају стандардним компајлером Ц. Могуће је покренути програме у режиму скрипте.
Списак измена:
- Додата је додатна подршка за кључну реч парамс за конструкторе цласс Фоо{ публиц Фоо(парамс стринг[] аргс){ фореацх (вар арг ин аргс) принт(арг); } }
- цодеген:
- Побољшана подршка за конструкторе структуре СимплеТипе (на пример, користи се за повезивање типедеф уинт32_т пеопле_инсиде; из Ц) [СимплеТипе] [ЦЦоде (цнаме = "пеопле_инсиде")] јавна структура ПеоплеИнсиде : уинт32 {}
- Побољшано руковање атрибутом „НоВраппер“.
- ЦЦоде.типе_цнаме и гет_ццоде_типе_наме() су дозвољени за класе.
- Г_ТИПЕ_ИНСТАНЦЕ_ГЕТ_ЦЛАСС/ИНТЕРФАЦЕ се увек користи за спољне симболе.
- Користи се г_бокед_фрее у фрее-враппер-у за додељивање ГЛиб.Валуе на гомилу.
- Поправљено је цурење меморије током имплицитног распакивања ГЛиб.Валуе (универзални контејнер било ког типа вредности).
- Поправљено је цурење меморије приликом премештања структуре додељене хеап-у у стек.
- Осигурано је наслеђивање деструктора надређене структуре
- Побољшано је исправно преузимање симбол_референце угнежђених израза за пребацивање.
- Уклоњена су сва угнежђена појављивања ЦЦодеЦастЕкпрессион.
- Заустављено је погрешно позивање подразумеваног руковаоца сигналом.
- Повезани "стринг.х" за стрцмп() (ПОСИКС профил, режим у коме Вала генерише код користећи само стандардну Ц библиотеку).
- Вала:
- Побољшано откривање дупликата изворних датотека пакета.
- Поља/својства ГткЦхилд морају бити проглашена без власништва.
- Поновно додељивање поља/својства ГткЦхилд је забрањено.
- Строжи услов је примењен на ламбда приликом делегирања задатка.
- Забрањено је коришћење једнократних СимплеТипе структура.
- Отпакивање ГЛиб.Валуе обезбеђује да се врати вредност која није у власништву.
- Забрањено је пребацивање ГЛиб.Валуе у структурни/једноставни тип са нултом.
- Додата провера аргумента типа у основним типовима/класи/предуслови интерфејса.
- Хватање параметара/променљивих ва_лист је забрањено.
- Генерици који садрже показивач на структуру морају се пребацити на исправан тип када им се приступа да би се избегло Ц УБ.
- Имплементирано закључивање типа за "ин" унутар енума.
- Побољшана провера контекста за доделе у пољу за писање.
- Укључен "стдлиб.х" за Енум.то_стринг() (ПОСИКС).
- Исправна изворна референца је постављена за имплицитне променљиве "ово" и "резултат"
- Обезбеђена је порука о грешци за неважећи интерни операнд унарних израза.
- Програмер: Заустављено је додавање „;“ после тела ВитхСтатемент.
- Гирпарсер:
- Обезбеђена је обрада анонимног делегата који није подржан виртуелним методом или сигналом.
- Примењени метаподаци „делегате_таргет“ за методе и параметре
- Примените метаподатке „дестрои_нотифи_цнаме“ на поља
- Примените "типе_гет_фунцтион" метаподатке за класе и интерфејсе
- Подесите ЦЦоде.типе_цнаме за класе ако није подразумевано.
- гирвритер: Осигурава да су елементи параметара инстанце уписани.
- гирвритер: Имплементиран подразумевани излаз руковаоца сигналом.
- либваладоц/хтмл: Уклоњено сортирање поља структуре да би се оставио њихов оригинални редослед приликом генерисања хтмл документације валадоц.орг
- либваладоц: Уверите се да су вредности за Апи.Цласс.ис_цомпацт исправно преузете
- либваладоц: Додан омот за библиотеку грапхвиз "агедге".
- Вези:
- Мање исправке приликом генерисања веза: цаиро, гобјецт-2.0, панго, гооцанвас-2.0, цурсес, алса, бзлиб, склите3, либгвц, посик, гстреамер-1.0, гдк-3.0, гдк-к11-3.0, гтк, гтк осигурач, либкмл-3.0
- гдк-пикбуф-2.0: Поправи Пикбуф.саве_то_стреамв_асинц()
- гио-2.0: ПоллаблеОутпутСтреам.врите*_нонблоцкинг() исправка везивања
- гио-2.0,гтк+-3.0,гтк4: Експлицитни атрибути ц-типа параметара ва_лист се одбацују
- гио-2.0: Изабрани инвокер који недостаје за неке методе АппИнфо/Филе.*().
- глиб-2.0: Додат ГЛиб.[С]Лист.ис_емпти() практичних метода за не-нулл методе.
- глиб-2.0: Везивање ассерт_цмп* функције [#395]
- глиб-2.0: Побољшан тип поља ОптионЕнтри.флагс
- глиб-2.0: ПтрАрраи је сада подкласа ГенерицАрраи
- гстреамер-1.0: ЦЦоде.типе_ид МиниОбјецт је подешен на Г_ТИПЕ_БОКСЕД [#1133]
- гтк+-2.0,јавасцриптцорегтк-4.0: Исправљено коришћење атрибута ЦЦоде.типе_цнаме
- гтк+-3.0,гтк4: Исправљене су неке вредности и параметре враћања делегата
- гтк4: Ажурирано на верзију 4.0.2.
Извор: опеннет.ру