Новое в версии 2.0
Executor IDE
- Прекращение поддержки
-
Завершение поддержки и развития Executor IDE. Для написания и отладки скриптов используйте плагин для среды разработки Visual Studio Code.
Отладка
- Новые возможности отладки
-
В режиме отладки, после выполнения скрипта, в консоль будет выводиться список незакрытых в процессе выполнения ресурсов.
Встроенный язык
- Модификатор «исп»
-
Реализована возможность использовать модификатор исп без объявления переменной. Это нужно, чтобы захватить Закрываемое значение, которое будет закрыто автоматически при выходе из текущей области видимости.
- Функциональные типы
-
Добавлены функциональные типы.
- Пространство имен «Стд»
-
Включен автоимпорт всех пространств имен из
Стд
. Больше нет необходимости вручную импортировать пространства имен изСтд
. - Интерполяция строк
-
Строковые литералы поддерживают интерполяцию строк.
- Операции
-
Добавлены операции:
- Обобщенный синтаксис литералов
-
Изменен обобщенный синтаксис литералов Байты, Ууид, Время, Дата, ДатаВремя, Момент, ЧасовойПояс:
Байты{FF01AA} Ууид{3298d7dd-93f5-4778-9084-14afb7fc89ca} Время{12:00} Дата{2020-01-01} ДатаВремя{2020-01-01 12:00} Момент{2020-01-01 12:00 Z} ЧасовойПояс{Europe/Moscow}
Изменен синтаксис литерала типа на Тип<ИмяТипа>, например Тип<Строка>.
- Ключевое слово «ничто»
-
Добавлено ключевое слово ничто. Его можно использовать только в качестве:
- типа возвращаемого значения метода (для общности), что равносильно отсутствию указания типа;
- типа результата функционального типа.
ничто нельзя никуда присвоить и с ним нельзя никак взаимодействовать.
(XXX)→YYY
можно присвоить в(XXX)→ничто
. - Запрещено вызывать «процедуры» как «функции»
-
Запрещено вызывать методы, не возвращающие значение, так, как будто они возвращают значение.
Исключение составляет системный метод Вычислить():
- При этом вызов процедуры должен быть последним, т. е. результатом всего Вычислить();
- Результатом вычисления будет значение Неопределено .
- Обобщенные типы
-
Добавлены обобщенные типы.
- Синтаксис обобщенных типов
-
Больше не поддерживается синтаксис обобщенных типов без явного указания параметров типа. Все типы встроенных коллекций теперь обобщенные. Нельзя написать просто
Массив
— нужно всегда явно задавать параметры типа (если он не может быть автоматически выведен). - Системные обобщенные методы
-
Реализованы системные обобщенные методы — методы, имеющие тип-параметр, влияющий на типизацию метода.
Такой метод может быть вызван для аргумента (аргументов), типы которых определяются типом-параметром метода. Таким же образом тип результата метода может быть связан с типом-параметром метода.
Синтаксис вызова с указанием типа:имя-метода<имя-типа-1, ..., имя-типа-N>(параметры)
Методы, которые становятся обобщенными:
Минимум<имя-типа это Сравнимое>(имя-типа, имя-типа)
ЧитаемоеСоответствие<тип-ключа, тип-значения> .ПолучитьИлиУмолчание<тип-умолчания>( ключ: тип-ключа, умолчание: тип-значения|тип-умолчания ): тип-значения|тип-умолчания
ЗапланированныеЗадания.Создать<имя-типа-1, имя-типа-2>( обработчик: (имя-типа-1, имя-типа-2)->Объект?, параметр-1: имя-типа-1, параметр-2: имя-типа-2 )
ФоновыеЗадания.Выполнить<имя-типа-1, имя-типа-2>( обработчик: (имя-типа-1, имя-типа-2)->Объект?, параметр-1: имя-типа-1, параметр-2: имя-типа-2 )
- Именованные параметры
-
Добавляется возможность вызывать методы и конструкторы с именованными параметрами. Можно смешивать позиционную и именованную формы в вызове. Все именованные параметры должны идти после позиционных.
- Аннотации во встроенном языке
-
Реализованы аннотации во встроенном языке.
Доступна аннотация @ИменованныеПараметры, которая может быть размещена на методах и конструкторах. Данная аннотация запрещает вызывать метод с позиционными аргументами (допускаются только именованные аргументы).
Пример метода с аннотацией:@ИменованныеПараметры метод Тест(Параметр: Число) ;
- Создание экземпляра по известному типу
- Реализовано создание экземпляра типа по известному типу во время работы приложения. Добавлен метод Тип.СоздатьЭкземпляр().
- Регулярные выражения
-
Реализованы регулярные выражения.
Для работы с регулярными выражениями используется новый тип Образец. Для него реализован литерал вида '\W+'.
Для работы с совпадениями используется новый тип Совпадение. Он описывает очередное совпадение и работает с подстроками, захваченными группами захвата.
Расширен тип Строка:
- добавлены методы Строка.Содержит(), Строка.ПолноеСовпадение();
- добавлены перегрузки для методов Строка.Разделить(), Строка.Заменить().
В случае некорректного синтаксиса регулярных выражений выбрасывается исключение ИсключениеНекорректноеРегулярноеВыражение.
- Отражение свойств типов
-
Реализовано отражение свойств типов:
- перечисление имеющихся свойств,
- установка значений и чтение значений свойств через отражение.
- Форматирование и округление чисел
-
Добавлена возможность форматирования чисел через вызов метода Число.Представление(Формат: Строка) по строке форматирования Формат.
Поведение метода Число.Представление() (без параметров) изменилось. Теперь результатом будет строка, содержащая исходное число, отформатированное в соответствии с форматной строкой "_".
Добавлено перечисление РежимОкругления с режимами округления чисел. Метод Число.Округлить() теперь принимает режим округления. Добавлена перегрузка метода Число.Округлить(), принимающая только режим округления и округляющая число до целого в соответствии с заданным режимом.
Добавлена перегрузка метода Число.ВСтроку(), позволяющая переводить число в другие системы счисления.
Прикладная функциональность
- Списки отозванных сертификатов ЭЦП
-
Добавлена поддержка чтения и генерации списков отозванных сертификатов электронной цифровой подписи (ЭЦП) в формате CRL.
Добавлены типы криптографии:
- СписокОтозванныхСертификатов,
- ГенераторСпискаОтозванныхСертификатов.
Тип генерации сертификатов ЭЦП ПараметрыСертификата переименован в ГенераторСертификата.
Для сертификата добавлена возможность при генерации указать адрес сертификата издателя, точки распространения списков отзыва и сервиса OCSP (Online Certificate Status Protocol).
- Чтение даты и времени из JSON
-
Методы ЧтениеJSON.ПрочитатьСодержимоеКакДата() и ЧтениеJSON.ПрочитатьСодержимоеКакВремя() теперь умеют читать значения из представления даты и времени. Например, из строки "2021-01-01 10:11:12". Контроль «отсечения» лишних частей даты и времени лежит на параметрах этих методов ИгнорироватьДату и ИгнорироватьВремя.
Методы СериализацияJSON.ПрочитатьМассив(), СериализацияJSON.ПрочитатьОбъект() и СериализацияJSON.ПрочитатьСоответствие() умеют считывать значения из представления даты и времени в поля структур с типами Дата или Время. Например, из строки "2021-01-01 10:11:12". Контроль «отсечения» лишних частей даты и времени лежит на свойстве НастройкиЧтенияОбъектовJson.ИгнорироватьЛишниеЧастиДатыВремени.
Пустые части даты и времени игнорируются по умолчанию. Например, "2021-01-01 00:00" для типа Дата и "0001-01-01 10:11:12" для типа Время.
- Работа с пустыми значениями и коллекциями в JSON
-
У типа НастройкиЗаписиОбъектовJson, используемого в методе СериализацияJson.ЗаписатьОбъект(), появились новые свойства:
- НастройкиЗаписиОбъектовJson.ПропускатьНеопределено — при записи объекта в JSON будут пропущены свойства со значением Неопределено;
- НастройкиЗаписиОбъектовJson.ПропускатьПустыеКоллекции — при записи объекта в JSON будут пропущены свойства со значениями с типом коллекций, если они пусты.
У типа НастройкиЧтенияОбъектовJson, используемого в методах СериализацияJSON.ПрочитатьМассив(), СериализацияJSON.ПрочитатьОбъект() и СериализацияJSON.ПрочитатьСоответствие(), появились новые свойства:
- НастройкиЧтенияОбъектовJson.ИнициализироватьОтсутствующиеПоля — при чтении из JSON, отсутствующие поля у структур будут заполнены явными значениями инициализации (Неопределено имеет приоритет);
- НастройкиЧтенияОбъектовJson.ИнициализироватьПустыеКоллекции — при чтении из JSON, отсутствующие поля структур с типами коллекций будут инициализированы пустыми значениями этого типа.
- Тип «ХешированиеДанных»
-
Тип ХешированиеДанных теперь умеет вычислять хеш на основе различных типов данных. Ранее это было возможно только для типов Байты и ПотокЧтения.
Реализован новый метод ХешированиеДанных.Хеш(), который упрощает вычисление хеша. Например:
знч Значение = новый ДатаВремя(2022, 4, 1) знч Хеш = ХешированиеДанных.Хеш(Значение, АлгоритмХеширования.Sha1)
Для хеширования строк появилась возможность указать кодировку, например:
знч Хеш = ХешированиеДанных.Хеш("Какое-то строковое значение", АлгоритмХеширования.Sha1, "UTF-16")
- Тип «ГенераторQrКода»
-
Реализован тип ГенераторQrКода, поддерживающий генерацию QR-кодов для текста, телефона, почты, визитной карты, подключения Wi-Fi, URL, календарного события.
- Тип «ПотокЧтения»
-
- Добавлен метод КопироватьВФайл. Метод реализует частый сценарий и исключает явную работу с ресурсом (потоком записи для файла) и риск забыть закрыть поток записи.
- Добавлен метод ПрочитатьКакСтроку. Отличие от удаленного метода ПрочитатьКакТекст — удаляется UTF-8 BOM при чтении из потока.
- Добавлен метод ПрочитатьКакБайты.
- Тип «ЗаписьZip»
-
Добавлена поддержка многопоточного сжатия при создании zip-архивов. Максимальное количество потоков для сжатия можно указать в конструкторе ЗаписьZip; по умолчанию значение равно единице. Количество потоков для сжатия будет выбираться исходя из технической возможности использовать многопоточное сжатие и некоторых параметров.
Переименования
Во встроенном языке:
- Ключевое слово любой переименовано в неизвестно,
- Ключевое слово enumeration переименовано в enum.
В системе типов:
- У типа Форматируемое метод Форматировать переименован в Представление()
- Метод глобального контекста Число заменен на конструктор
новый Число()
- Метод глобального контекста Булево заменен на конструктор
новый Булево()
- Метод глобального контекста Строка удален. Вместо него следует использовать метод Объект.ВСтроку()
- Тип СимволыМенеджер переименован в Символы,
- Тип ФиксированныйМассив переименован в ЧитаемыйМассив,
- Тип ФиксированноеСоответствие переименован в ЧитаемоеСоответствие,
- Тип ФиксированноеМножество переименован в ЧитаемоеМножество,
- Тип ФиксированнаяКоллекция переименован в ЧитаемаяКоллекция,
- Тип ФиксированныеЗаголовкиHttp переименован в ЧитаемыеЗаголовкиHttp,
- Тип ВременнаяЗона переименован в ЧасовойПояс,
- Статический метод ВременнаяЗона.Текущая() переименован в ЧасовойПояс.Текущий(),
- Удалены типы ДиапазонТекста и АдминистрированиеДиапазонПортов. Вместо них следует использовать обобщенный тип Диапазон.
Глобальное переименование:
- Идентификатор переименован в Ид,
- ИнформационнаяБаза переименован в Инфобаза,
- ОткрытьПотокДляЧтения переименован в ОткрытьПотокЧтения.