Releases: EvilBeaver/OneScript
v1.6.0
Новое в версии 1.6.0
Новая функциональность
- Реализован класс "МенеджерФоновыхЗаданий" позволяющий запускать методы в параллельных потоках (на базе Tasks). API немного отличается от 1С, см. синтакс-помощник
МассивПараметров[0] = 1;
МассивПараметров[1] = 2;
ФоновыеЗадания.Выполнить(ЭтотОбъект, "МетодДляВыполненияВФоне", МассивПараметров);
Попытка
ФоновыеЗадания.ОжидатьЗавершенияЗадач();
Исключение
МассивОшибок = ИнформацияОбОшибке().Параметры;
Если МассивОшибок <> Неопределено Тогда
Для Каждого Задание Из МассивОшибок Цикл
Сообщить(ПодробноеОписаниеОшибки(Задание.ИнформацияОбОшибке));
КонецЦикла;
КонецЕсли;
КонецПопытки;- Реализован класс БлокировкаРесурса, который предназначен для синхронизации доступа к одной переменной из разных потоков (Mutex)
- Реализована трассировка загрузки пакетов. Если задана переменная окружения OS_LRE_TRACE=1 то в консоль выводится трассировка поиска библиотек, что должно помочь при расследовании ошибок поиска библиотеки.
- Обновлен плагин отладчика для VS Code, исправлена ошибка вычисления дочерних переменных в панели watch
- Реализована поддержка ввода многострочной строки методом ВвестиСтроку. Сигнатура ВвестиСтроку() приведена к платформе 1C
Исправление ошибок
- Разрешена пустая строка и пробелы в имени кодировки. Используется в методах, где можно указывать перечисление
КодировкаТекстаили имя кодировки строкой - Исправлены ошибки #1014,#487: Работа внешних компонент после компиляции в EXE при подключении из файла или макета стала более корректной.
- Исправлено сравнение строк при сортировке списков значений и таблий. Поведение приведено к 1С
- Исправлено вычисление дочерних переменных для панели watch в отладчике (требуется обновление плагина отладчика для VSC)
- Прочие мелкие исправления
v2.0-alpha-2
Дистрибутив FDD - требует установки net5.0 runtime правильной разрядности
Дистрибутивы win/linux независимые и не требуют установки net5.0, однако, весят больше.
v2.0-alpha-1
Глубокий рефакторинг ядра 1Script
Данная версия является переработкой внутренних механизмов 1Script и заделом к дальнейшему развитию.
Основные изменения
- Новый парсер языка, реализованный в виде отдельной библиотеки OneScript.Language, позволяющей получать AST языка 1С. Позволяет создавать независимые инструменты анализа кода, обфускаторов, трансляторов, etc
- Более простая интеграция среды исполнения в сторонние приложения
Предупреждение
- Отсутствует обратная совместимость с существующими внешними компонентами. Потребуется перекомпиляция внешних компонент под версию 2.0
v1.5.0
Изменения в версии 1.5.0
Новые возможности
- Реализована поддержка внешних компонент 1С, созданных по технологии Native API. Метод
ПодключитьВнешнююКомпонентуподдерживает параметр "ТипВнешнейКомпоненты", который, принимая значениеТипВнешнейКомпоненты.Nativeпозволяет загрузить внешнюю компоненту 1С и работать с ней из языка 1Script. - В классы работы с регулярными выражениями добавлена поддержка именованных групп
- Поддержка работы с синонимами методов в COM классах
- Приложение oscript-config включено в поставку
Исправленные ошибки
- В некоторых ситуациях некорректно расчитывалась сумма в методе ТаблицаЗначений.Свернуть
- Парсер выдавал ошибку на модулях, которые заканчивались директивой
#КонецОбласти - Директивы препроцессора обрабатывались "по месту", в отличие от 1С, в которой директива препроцессора должна быть единственной синтаксической конструкцией в строке. Поведение приведено к 1С.
- Не контролировалась парность директив
Область/КонецОбласти. - Не компилировались директивы условной компиляции, в которых выражения начиналось со скобки
- Динамически загруженные модули, созданные из строк, имели одинаковые имена, что в узкоспециальных кейсах приводило к ошибкам.
- В консоли Powershell обращение к свойству ЦветТекста выдавало ошибку
v1.4.0
Изменения в версии 1.4
Улучшения отладчика
Плагин отладчика для Visual Studio Code существенно переработан. Реализована поддержка отладки веб-приложений на 1Script.Web.
Кроме того, для веб-приложений реализован режим attach, который позволяет подключиться к уже работающему веб-приложению. Для этого приложение должно быть запущено в режиме отладки с ключом --debug.port=порт_отладки
Для использования нового протокола отладчика в файле launch.json необходимо указать "protocol": "tcp" Старый протокол на базе WCF оставлен для совместимости
Прочие изменения
- Выделена отдельная сборка OneScript.DebugServices, предназначенная для подключения отладчика к сторонним приложениям, испольщующим 1Script. Поставляется через NuGet
- Добавлена возможность передачи переменных среды в отлаживаемое приложение. См свойство
envв файле launch.json - Улучшено отображение COM-объектов в отладчике
- Улучшено отображение свойств объектов в отладчике. Больше не отображается свойство ЭтотОбъект.
- Исправлена ошибка метода Записать() класса БуферДвоичныхДанных (BinaryBuffer.Write()): Не учитывалась начальная позиция записи и запись происходила с 0 позиции целевого буфера.
- Улучшена всплывающая подсказка при наведении на переменную в отладчике.
- Добавлена обработка заголовка "Range" объекта HTTPЗапрос.
- Для методов массива "Добавить" и "Вставить" реализовано необязательное указание параметра "Значение", поведение приведено в соответствие с поведением в 1С.
- Обновление поставляемой версии opm до 0.16.2
- Пакет oscript-config включен в поставку
- Улучшено отображение дерева значений в отладчике
- Исправлена ошибка, возникающая при явном указании направления сортировки ВОЗР в таблице значений
- Исправлена ошибка приведения типов к Булево при коротком вычислении выражений
- Исправлена ошибка метода "Извлечь" класса "ЧтениеZipФайла": в случае файла с некорректным указанием размера/контрольной суммы выбрасывалось исключение и создавался файл со случайным именем, в 1С (или с использованием архиватора) исключение возникает, но файл создается с корректным именем.
- Исправлена ошибка вывода длинных текстовых значений переменных в отладчике
v1.3.0
Изменения в версии 1.3
Новые возможности
- Реализованы операторы
ДобавитьОбработчик/УдалитьОбработчик. Добавлен методВызватьСобытиеобъектаСценарийдля генерации - Реализован класс
"Действие"позволяющий создавать объекты-делегаты, ссылающиеся на методы
Прочие изменения и исправления ошибок
- Ускорен лексер языка
- Устранены ошибки wcf-отладчика, связанные с размером буфера клиента-сервера отладки
- Изменен API
ScriptingEngineв части обработчиков директив препроцессора - Удалены устаревшие методы и классы
- Прекращено использование
Costura.Fody, которое не оправдало себя на Linux - Исправлено поведение файлового потока. Поток теперь разрешает совместное использование для чтения.
- Реализован более подробный вывод текста исключения в EXE, если исключение произошло на системном уровне
- Реализован вывод более детального места возникновения ошибки в EXE, если ошибка произошла на уровне кода 1С
- Реализована корректная загрузка модулей в скомпилированном приложении
события и вызова подписчиков - Исправлена ошибка компилятора, пропускавшего специальным образом составленные операторы завершения блока
- Исправлена ошибка компиляции и выполнения операторов
ПрерватьиПродолжитьиз многократно вложенных операторовПопытка - Исправлена сборка пакета RPM
- Обновлена поставляемая версия opm
- Изменен значок приложения TestApp
v1.2.0
Организационные изменения
Состоялся выпуск 64-разрядной сборки. Теперь основные дистрибутивы имеют 2 варианта - x86 и x64 (который по-факту является версией AnyCPU)
32-разрядную сборку рекомендуется применять для взаимодействия с 32-битной версией 1С:Предприятия с помощью COM-Соединителя. В остальных случаях - рекомендуется использовать сборку x64.
С версией 1.2 рекомендуется использовать отладчик версии 0.5.0
Изменения в версии 1.2
Новые возможности
- Добавлены методы работы с часовыми поясами:
ЧасовойПояс, СмещениеСтандартногоВремени, УниверсальноеВремя, МестноеВремя, ПредставлениеЧасовогоПояса, ТекущаяУниверсальнаяДата - Добавлены методы
ПолучитьБуферДвоичныхДанныхИзHexСтроки, ПолучитьHexСтрокуИзДвоичныхДанных, ПолучитьHexСтрокуИзБуфераДвоичныхДанных - Добавлен конструктор объекта
ЧтениеТекстана основании Потока - Улучшена диагностика места возникновения ошибки в модулях, скомпилированных в EXE
- Развитие отладчика: в окне просмотра отображаются элементы объектов-коллекций.
- Развитие отладчика: доступно вычисление значений при наведении мыши на переменную в тексте модуля, а также табло Intermediate
- Реализованы условные директивы препроцессора Если..Тогда. Стандартными символами являются Linux, MacOS, Windows. При запуске на определенной платформе переменная препроцессора будет иметь значение Истина. Пользовательские директивы можно задать в параметре конфигурации
preprocessor.define - Выполнен рефакторинг лексического анализатора. Выделена nuget-библиотека
OneScript.Language, содержащая лексический анализатор кода на языке 1С. Библиотека распространяется, как экспериментальная. - Реализована установка свойств объектов с помощью Рефлектора
Исправление ошибок
- Улучшена совместимость методов работы с двоичными данными между 1Script и 1С
- Не работает передача параметров по значению в Выполнить
- Ошибка загрузчика, вызывающего падение при обращению к глобальному контексту в момент инициализации библиотек
- Исправлено возникновение ошибки "Не удалось создать защищенный канал TLS/SSL"
- Методы Сдвинуть ТаблицыЗначений и СпискаЗначений работают циклично (совместимость с 1С)
- NPE в методе РегулярноеВыражение.Заменить
- Не работала передача параметров по-умолчанию в методы текущего модуля, вызванные из Выполнить
- И другие
v1.1.1
Организационные изменения
Проект перешел на semantic versioning с трехзначной идентификацией основного номера релиза. Теперь команде станет проще выпускать релизы, а сообществу - идентифицировать уровни изменений.
Изменения в версии 1.1
Новые возможности
- Добавлена поддерка XML-схем. Реализован класс
XMLСхемаи ему сопутствующие (спасибо yukon39 за масштабную доработку) - Добавлена функциональность "Макетов". Теперь можно упаковывать в EXE не только скриптовый код, но и произвольные данные, а затем обращаться к ним единообразно
- Оптимизирован метод
Свернутьтаблицы значений - Реализована поддержка dynamic в объектах 1Script. Упрощено встраивание в приложения .NET
- Реализована локализация выводимых ошибок в зависимости от языка системы. Добавлен конфигурационный параметр
systemlanguageв oscript.cfg (спасибо alexkmbk). - В СоединениеHTTP всегда используется автоматический редирект. Реализовано свойство
РазрешитьАвтоматическоеПеренаправлениедля управления редиректом (спасибо Vladimir Bondarevskiy) - В соединении HTTP реализована автоматическая распаковка ответов, закодированных в gzip (спасибо Vladimir Bondarevskiy)
- Оптимизирована производительность оператора
Новый - Реализована часть ранее не реализованных методов в классах работы с двоичными данными
- Реализовано управление кодировкой ZIP-архивов. Добавлено системное перечисление
КодировкаИменФайловВZipФайле - Много других мелких улучшений.
Исправление ошибок
Благодаря Michael Rybakin в релизе исправлено множество самых разных ошибок, включая несоответствия поведению 1С на необычных сценариях.
- Внутреннее представление даты содержит микросекунды и искажает сравнение дат
- Некорректная работа метода
СписокЗначений.СортироватьПоПредставлению - Исправлена рефлексия типов при работе под Mono+Linux
- Повторяюшиеся имена колонок
ТаблицыЗначенийдобавляются в список колонок - Метод Массив.Вставить расширяет границы массива при вставке за пределы массива
- Не работает конструктор объекта
ЧтениеДанныхиЗаписьДанныхпри указании параметров дальше 2-го - Отсутствовал конструктор массива по фиксированному массиву
- Некорректно отображались значения
СтрокиТаблицыЗначенийв отладчике - Поведение метода
Удалитьструктуры не соответствовало 1С при удалении несуществующего свойства - Некорректное экранирование символов / и \ при работе с JSON
- Некорректное поведение методов
DataReader.ReadIntoBinaryDataBuffer,DataReader.ReadIntoBinaryDataBuffer(Count),MemoryStream.CloseAndGetBinaryData. - Не было реализовано побайтовое сравнение двоичных данных оператором равенства
- Поведение метода Pow для возведения в степень приведено в соответствие с 1С
- Литерал даты из одних нулей в 1С распознается, как корректный. Приведено поведение к 1С
- Строковое представление двоичных данных не работало в Linux. Под Win не соответствовало 1С
- Функция
Форматзависала на некоторых форматных строках - Исправлена ошибка функции
Целна больших числах
v1.0.21
Изменения в версии 1.0.21
Новые возможности
- Реализована возможность получать стектрейс при возникновении исключения. См. метод ПолучитьСтекВызовов() объекта ИнформацияОбОшибке
- Реализован метод глобального контекста ПрочитатьJson (ReadJson).
- Реализован метод глобального контекста ЗаписатьJSON. В текущей версии обрабатывается только первые два параметра: ЗаписьJSON и Значение.
- Существенно улучшена совместимость чтения/записи JSON с платформой 1С
- Развитие возможностей рефлексии для приложений, встраивающих ScriptEngine.dll
- Развитие рефлектора: поддержка аннотаций, приватных методов, встроенных и пользовательских типов
- Реализована поддержка параметра СимволыОступа в ЗаписьXML.
- ЗаписьXML: Реализована поддержка параметра "ДобавлятьBOM"
- Реализован оператор "Унарный плюс
- Добавлено свойство "УдаленныйУзел" в TCPСоединение closes #732
- Строковое представление ДвоичныхДанных в hex-виде (совместимость с 1С)
Оптимизация и исправление ошибок
- Исправление: Не поддерживалось значение типа single в COMОбъектах
- Исправлена ошибка: в ЧтениеJSON не обрабатывались значения типа DateTime
- Исправлено отсутствие экранирования двойных кавычек в объекте ЗаписьJson
- ЗаписьXML: Исправлен неверный вывод комбинации
/ - Исправлена ошибка: ЗаписатьЦелое16 записывает 4 байта вместо двух
- Исправлена несовместимая с 1С компиляция литералов дат.
- Исправлено несовместимое с 1С поведение ф-ии СтрРазделить для пустых строк
- Исправлена ошибка в методе Вставить класса Соответствие. Не разрешалось опускать параметр Значение.
- Исправлена ошибка метода ЗаполнитьЗначенияСвойств при указании параметра "Заполняемые свойства"
- Исправлена ошибка компиляции отрицательных чисел в параметрах по-умолчанию
- Исправлено обращение к https-сервисам с новыми версиями протокола TLS
- Ускорен процесс компиляции модулей из-под отладчика IDE
v1.0.20
Изменения в версии 1.0.20
Аннотации
Добавлена возможность применения аннотаций для методов модулей. Аннотации применяются в языке 1С начиная с версии 8.2 и широко известны под именем "Директивы компиляции".
С появлением в платформе 1С "расширнений конфигурации" термин "Аннотация" уже официально появился в описании синтаксиса языка 1С.
Так, например, в расширении конфигурации 1С могут применяться аннотации методов &Перед, &Вместо и &После.
В 1Script аннотации применяются для произвольной разметки методов и/или параметров методов. Установленные аннотации можно прочесть с помощью Рефлектора.
Подробное описание в документации
Получение представления объекта
В модуле скрипта доступен метод ОбработкаПолученияПредставления, похожий по функциональности на аналогичный метод платформы 1С.
Метод принимает на вход 2 параметра:
- Представление - выходной параметр, новое значение представления
- СтандартнаяОбработка - флаг отмены стандартной обработки
Прочие изменения
- Формат проектов переведен на современные веяния .NET
- Сборка NUGET включает в себя варианты для .NET Framework и .NET Standard
- Внесены изменения в ядро, позволяющие применять 1Script в многопоточных приложениях наподобие IIS и Kestrel
- Устранен ряд проблем, усложняющих встраивание 1Script в сторонние приложения в качестве скриптового движка
- Улучшена работа HTTPСервисов для ASP.NET
- Добавлен метод ПолучитьТелоКакПоток в классе ОтветHTTP
- Добавлено получение двоичных данных из XML строки
- Добавлен параметр ИспользоватьBOM в объект HTTPЗапрос
- В методы ПеременныеСреды и ПолучитьПеременнуюСреды добавлена Цель - местоположение переменной среды (см. перечисление РасположениеПеременнойСреды)
Оптимизация и исправление ошибок
- Исправлена работа метода ЗаполнитьЗначенияСвойств для класса Сценарий
- Метод Сред выдавал ошибку, если второй параметр выводил за пределы строки
- Исправлены замечания по статическому анализу SonarQube
- Не работали конструкторы объектов ЧтениеДанных, ЗаписьДанных и ПотокВПамяти
- Исправлен ряд несовместимых с 1С поведений в необычных/нестандартых ситуациях.
- Английские синонимы примитивных типов
- Исправлено падение HTTP-сервисов в многопоточной среде
- В ряде ситуаций некорректно работали неуправляемые COM-объекты
- Исправлено обращение к локальным переменным внутри Выполнить
- Нельзя было задать свойства Keep-Alive и Close в HTTPЗапросе
- Исправлена ошибка неверного значения по умолчанию для параметра "ВключаяПустые" метода СтрРазделить
- Добавлен алиас StringStartsWith. StrStartWith объявлен устаревшим
- Исправлена работа exe от oscript -make под mono
- Ряд прочих небольших исправлений