Објављено је издање програмског језика Цристал 1.5, чији програмери покушавају да комбинују погодност развоја на језику Руби са високим перформансама апликација карактеристичним за језик Ц. Цристал-ова синтакса је блиска Руби-у, али није у потпуности компатибилна са њим, иако се неки Руби програми покрећу без модификација. Код компајлера је написан у Цристал-у и дистрибуиран под лиценцом Апацхе 2.0.
Језик користи статичку проверу типова, имплементирану без потребе за експлицитним навођењем типова променљивих и аргумената метода у коду. Цристал програми се компајлирају у извршне датотеке, са евалуацијом макроа и генерисаним кодом током компајлирања. У Цристал програмима је могуће повезати везе написане у Ц. Паралелизација извршавања кода се врши помоћу кључне речи „спавн“, која вам омогућава да асинхроно покренете позадински задатак, без блокирања главне нити, у облику лаганих нити званих влакна.
Стандардна библиотека пружа велики скуп уобичајених функција, укључујући алате за обраду ЦСВ, ИАМЛ и ЈСОН, компоненте за креирање ХТТП сервера и подршку за ВебСоцкет. Током процеса развоја, згодно је користити команду „цристал плаи“, која генерише веб интерфејс (лоцалхост:8080 подразумевано) за интерактивно извршавање кода на језику Цристал.
Главне промене:
- Компајлер је додао проверу кореспонденције имена аргумената у имплементацији апстрактног метода иу његовој дефиницији. Ако постоји неподударање имена, сада се издаје упозорење: апстрактна класа ФооАбстрацт абстрацт деф фоо(нумбер : Инт32) : Нил енд цласс Фоо < ФооАбстрацт деф фоо(наме : Инт32) : Нил п наме енд енд 6 | деф фоо(наме : Инт32) : Нил ^— Упозорење: позициони параметар 'наме' одговара параметру 'нумбер' надјашњеног метода ФооАбстрацт#фоо(нумбер: Инт32), који има другачије име и може утицати на пролазак именованог аргумента
- Када се вредностима променљиве додељује аргумент методу без типа, аргумент је сада ограничен на тип те променљиве. цласс Фоо @к : Инт64 деф инитиализе(к) @к = к # параметар к ће бити откуцан @к енд енд
- Омогућава вам да додате напомене параметрима метода или макроа. деф фоо(@[МаибеУнусед] к); крај # ОК
- Додата подршка за коришћење константи као индекса и имена у торкама. КЕИ = "с" фоо = {с: "Стринг", н: 0} ставља фоо[КЕИ].сизе
- Нове методе Филе#делете? су додате у Филе АПИ за брисање датотека и директоријума. и Дир#делете?, који враћају нетачно ако датотека или директоријум недостаје.
- Појачана је заштита методе Филе.темпфиле, која сада не дозвољава нулте знакове у редовима који чине име датотеке.
- Додата променљива окружења НО_ЦОЛОР, која онемогућава истицање боја у излазу компајлера и интерпретатора.
- Рад у режиму тумача је значајно побољшан.
Извор: опеннет.ру
