Состоялся релиз ShardScript 0.5, встраиваемого строго типизированного скриптового языка программирования с C-подобным синтаксисом. Язык ориентирован на выразительность высокоуровневых конструкций и простоту интеграции. В состав релиза входят интерпретатор, обновлённая стандартная библиотека (STL), официально поддерживаемые сторонние модули и прототип LSP-сервера для Windows.Реализация ShardScript написана на языке С++ и распространяется под лицензией Apache 2.0. Бинарные сборки доступны для платформ Windows и Linux. Среди возможностей языка: cтатическая типизация с выводом типов; C-подобный синтаксис; поддержка обобщённых типов (Generics), перечислений и функциональных цепочек обработки данных; стандартная библиотека (STL) с функциями для работы с файловой системой, вводом/выводом, структурами данных, датами и сериализации. Среди изменений в новой версии:
Источник: https://www.opennet.ru/opennews/art.shtml?num=66080
- Добавлена поддержка конструкции "switch". Поддерживается перегрузка оператора "== "для пользовательских типов внутри блоков "case". amount: int = 10; switch (amount) { case 1: { println("Один"); } case 2: { println("Два"); } default: { println("Больше"); } } Добавлено выражение "switch" с поддержкой сопоставления типа через оператор "is". На данный момент не стоит ожидать значительного прироста производительности от использования "switch", так как реализация не оптимизирована и пока просто последовательно проверяет эквивалентность значений: animal: IAnimal = GetAnimal(); println(switch animal { is Dog d => "Это собака: " + d.Woof, is Cat => "Это кот", _ => "Неизвестное животное" }); Добавлен синтаксис инициализации массивов с динамически задаваемым размером - "new T[size]". В перечисления (Enums) добавлена поддержка метода ToString() и операции сравнения на равенство. Для типа IEnumerable‹T› реализованы LINQ-подобные методы: Select, Where и OrderBy для обработки данных в функциональном стиле. В модуль работы со временем (shard.time) добавлены типы DateTime и TimeSpan, реализована поддержка UTC/Local, обеспечена конвертация эпохального времени, добавлены вычисления с датами и форматирование строк. В потоки ввода/вывода добавлены классы StreamReader, StreamWriter, BinaryReader и BinaryWriter. Реализована безопасная генерация временных файлов (Path.CreateTempFile, Path.GetTempPath) и объединение путей через оператор деления (/). В stdio метод input() теперь принимает строку-запрос ('input("Введите имя: ")'). Добавлен метод stdio.Dump‹T›(obj) для форматированного вывода структуры объектов с подсветкой синтаксиса и защитой от циклических ссылок. Для JSON реализована типизация через JsonNodeKind, свойства-геттеры (IsNull, IsObject, IsArray), явное приведение типов через оператор "as" и прямой доступ к полям. Улучшено формирование трассировки стека (Stack Trace) при обработке исключений.
Источник: https://www.opennet.ru/opennews/art.shtml?num=66080