Издање програмског језика Хаке 4.2

Доступно је издање Хаке 4.2 комплета алата, које укључује истоимени програмски језик високог нивоа са више парадигми са јаким куцањем, унакрсни компајлер и стандардну библиотеку функција. Пројекат подржава превод на Ц++, ХасхЛинк/Ц, ЈаваСцрипт, Ц#, Јава, ПХП, Питхон и Луа, као и компилацију у ЈВМ, ХасхЛинк/ЈИТ, Фласх и Неко бајт код, са приступом изворним могућностима сваке циљне платформе. Код компајлера се дистрибуира под ГПЛв2 лиценцом, а стандардна библиотека и ХасхЛинк и Неко виртуелне машине развијене за Хаке су лиценциране под лиценцом МИТ.

Језик је оријентисан на изражавање са јаким куцањем. Подржане су објектно оријентисане, генеричке и функционалне технике програмирања. Хаке-ова синтакса је блиска ЕЦМАСцрипт-у и проширује је функцијама као што су статичко куцање, закључивање аутоматског типа, подударање шаблона, генерика, итераторски базирани за петље, АСТ макрои, ГАДТ (генерализовани алгебарски типови података), апстрактни типови, анонимне структуре, поједностављене низови дефиниција, изрази за условну компилацију, причвршћивање метаподатака пољима, класама и изразима, интерполација стрингова ('Моје име је $наме'), параметри типа ('нев Маин("фоо")') и још много тога. цласс Тест { статиц фунцтион маин() { финал пеопле = [ "Елизабетх" => "Програмирање", "Јоел" => "Дизајн" ]; фор (наме => посао у људима) { траце(‘$наме ради $посао за живот!’); } } }

Нове функције у верзији 4.2:

  • Декларисање статичких променљивих и функција на нивоу модула, без потребе да их умотате у класу.
  • Подршка за "класичне" апстрактне класе и функције.
  • Природна имплементација променљивих функција за све циљне платформе (хаке.Рест) и додавање оператора проширења аргумената „ф(...арраи)“.
  • Имплементација петље догађаја за појединачне нити (“сис.тхреад.Тхреад.евентс”).
  • „@:инхеритДоц“ метаподаци за наслеђивање документације типа/поља.
  • Подршка за преоптерећење метода за екстерне методе на свим циљним платформама.
  • Прослеђивање конструктора који је у основи његовог типа у апстракт помоћу метаподатака „@:форвард.нев“.
  • Додан конструктор „ЕИс“ у „хаке.мацро.Екпр“.
  • Способност да се направи варијанта апстрактног типа са "@:форвард.варианце".
  • Представљање типа „Било који“ као „Динамичан“ када се обједињује варијација.
  • Додали су неке основне типове изузетака у пакет „хаке.екцептионс“.
  • Подршка за прилагање метаподатака приликом декларисања променљивих.
  • Функција "СтрингТоолс.унсафеЦхарАт" која се користи за итерацију стрингова.
  • евал (интерпретер): Додате везе за "либув" у пакету "евал.лув".
  • евал: везивања за изворне имплементације „Инт64“ и „УИнт64“ преко пакета „евал.интегерс“.
  • цс: имплементација УДП сокета.
  • цс: модул „цс.Синтак” за инлине уметање Ц# кода.
  • јвм: Додата је ознака „-Д јвм.динамиц-левел=к” за контролу броја генерисаних оптимизација за динамички код. 0 = ништа, 1 = оптимизација читања/писања поља, 2 = затварања метода у време компајлирања.
  • јава, јвм: Подршка за ознаку "--јава-либ ".
  • питхон: имплементација АПИ-ја са нитима.

Општа побољшања:

  • „екпр ис СомеТипе“ не захтева умотавање у заграде.
  • Повећан приоритет за екстензије типа „@:усинг“.
  • Омогућава употребу екстензија статичног типа преко "супер".
  • Могућност постављања метаподатака у поља „@:ноДоц“.
  • Апстрактни тип "Мапа" је учињен транзитивним.
  • Подршка за „@:нативе“ на енум конструкторима.
  • Подршка за "@:усинг" на декларацијама типа ("типедефс").
  • Вишелинијске грешке користе "..." као префикс за наредне редове.
  • Закључивање типа је прерађено, анонимне структуре су боље конвертоване у експлицитне типове и „затворене“ када се функција заврши.
  • Закључивање типа функција без аргумената као "()->..." уместо "Воид->...".
  • Кључна реч „функција“ је дозвољена као име пакета.
  • Побољшано уметање објеката.
  • цс: Додата подршка за .НЕТ 5.0.
  • цпп: Подршка за изворне конструкторе за екстерне класе.
  • пхп: Додато је "пхп.Синтак.цустомАрраиДецл" да се прогласи изворни низ.
  • пхп: Ажуриране екстерне методе за различите функције и класе.
  • пхп: Оптимизована имплементација анонимних структура.
  • хл: Прескочите компилацију ако нема промена у модулима.
  • луа: Коришћење "хк-луа-симдјсон" за рашчлањивање јсон-а.
  • јвм: Смањено оптерећење ЦПУ-а у имплементацији "сис.тхреад.Лоцк".
  • јс: Побољшана компатибилност са Гоогле Цлосуре Цомпилер.
  • Нулл Сафети: Узмите у обзир "@:нуллСафети(Офф)" када декларишете променљиве: "вар @:нуллСафети(Офф) в".

Такође, додатак ВСЦоде едитору је ажуриран на нову верзију компајлера, у којој су се појавили наговештаји са генерисањем недостајућих поља интерфејса, једноставних и апстрактних класа, као и метода својстава.

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

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