издање комплета алата , који укључује истоимени програмски језик високог нивоа са више парадигми са јаким куцањем, унакрсни компајлер и стандардну библиотеку функција. Пројекат подржава превод на Ц++, ХасхЛинк/Ц, ЈаваСцрипт, Ц#, Јава, ПХП, Питхон и Луа, као и компилацију у ЈВМ, ХасхЛинк/ЈИТ, Фласх и Неко бајт код, са приступом изворним могућностима сваке циљне платформе. Код компајлера под ГПЛв2 лиценцом, и стандардну библиотеку и виртуелне машине развијене за Хаке и под лиценцом МИТ-а.
Језик је са јаким куцањем. Подржане су објектно оријентисане, генеричке и функционалне технике програмирања. Хаке синтакса је блиска ЕЦМАСцрипт и његове карактеристике као што су статичко куцање, закључивање аутотипова, подударање шаблона, генерика, базирани на итераторима за петље, АСТ макрои, ГАДТ (генерализовани алгебарски типови података), апстрактни типови, анонимне структуре, поједностављене дефиниције низова, изрази условне компилације, причвршћивање метаподатака пољима , класе и изрази, интерполација стрингова (“'Моје име је $наме'”), параметри типа ('нев Маин ("фоо")') и .
класа тест {
статичка функција маин() {
коначни људи = [
"Елизабета" => "Програмирање",
"Јоел" => "Дизајн"
];
за (име => посао у људима) {
траце('$наме ради $посао за живот!');
}
}
}
Нове функције у верзији 4.1:
- Додата оптимизација реп рекурзије.
- Додан је нови обједињени АПИ за руковање изузетцима.
- Конструкција „три {} цатцх(е) {}“ је дозвољена као скраћеница за „три {} цатцх(е: хаке.Екцептион) {}“.
- Додата ССЛ подршка за евал интерпретер.
- Циљни ЈВМ се више не сматра експерименталним.
- За протокол језичког сервера додата је подршка за функције „Иди на имплементацију“ и „Пронађи референце“.
- Побољшано именовање привремених локалних променљивих у генерисаном коду. Уклоњено сувишно "повратак"; у функцијама стрелице без повратне вредности.
- Комбинације приступа (доби, подразумевано) су дозвољене у пољима (само геттер, подразумевано понашање доделе).
- Дозволите операторе повећања и смањења за поља .
- Побољшано уметање фор петљи помоћу анонимних итератора.
- јс: Побољшана имплементација СтрингМап-а за ЕС5.
- јс: Генерисање лет променљивих је додато опцији компајлера „-Д јс-ес=6“, генерисање ЕС6 класа је побољшано.
- луа: оптимизован "СтрингИтератор", побољшано руковање грешкама.
- пхп: Оптимизовано "Стд.исОфТипе" за основне типове.
- пхп: Генерисани низови сада имплементирају изворне интерфејсе „Итератор“, „ИтераторАггрегате“, „Цоунтабле“.
- цс: Додати су метаподаци „@:ассемблиМета“ и „@:ассемблиСтрицт“.
- питхон: додата имплементација „__цонтаинс__“ у анонимне објекте
и "__гетитем__", што им омогућава да се користе као речници у генерисаном коду. - јвм: Значајно побољшане перформансе захваљујући новом начину приступа откуцаним функцијама и генерисања додатних интерфејса у случајевима када се објекти користе као анонимне структуре (спречено је динамичко тражење својстава):
Побољшања у стандардној библиотеци:
- Додата функција "Арраи.цонтаинс".
- Додат је „Арраи.кеиВалуеИтератор“, који имплементира итерацију кључ/вредност за низове („за (кључ => вредност у низу)“).
- Додат је тип ограничења "хаке.Цонстраинтс.НотВоид".
- Функције „финдИндек“ и „фолди“ су додате класи „Ламбда“.
- Имплементиран „приступ низу“ (приступ преко „арр[и]“) и итерација кључ/вредност за „хаке.дс.ХасхМап“.
- јвм: Имплементиране верзије „СтрингМап“, „сис.тхреад.Лоцк“, „сис.тхреад.Тхреад“ специфичне за ЈВМ.
- јава/јвм: Коришћене изворне имплементације „МД5“, „СХА-1“ и „СХА-256“ за модуле „хаке.црипто“.
- макро: Додато "хаке.мацро.Цонтект.цонтаинсДисплаиПоситион(пос)".
- нуллсафети: "Строги" режим се сада третира као једноструки; додат је режим „Строги нит“.
- „Стд.ис“ је застарео у корист „Стд.исОфТипе“.
- Додато упозорење када користите локалне променљиве без вредности у затварањима.
- јс: „унтипед __јс__(цоде, аргс)“ је застарео, замењен је са „јс.Синтак.цоде(цоде, аргс)“.
- пхп/неко: "неко.Веб" и "пхп.Веб" су застарели и биће премештени у библиотеку "хк4цомпат" касније.
У следећем издању :
- Побољшања менаџера пакета .
- Асинхрони систем заснован на АПИ-ју .
- Цороутинес.
- Декларисање модуларних статичких функција и променљивих без креирања класа (већ доступно у ноћним верзијама).
Извор: опеннет.ру
