Встречаем релиз-кандидат OneScript 2.0 с JIT-компиляцией на борту

27.09.2022      13970

С новой версией OneScript скрипты могут исполняться со скоростью скомпилированного C#. Это повысит производительность часто вызываемых классов и интенсивных операций ввода-вывода.

Кроссплатформенность и статическая типизация кода 1С для нативного выполнения на C#

Опубликован релиз-кандидат OneScript v2.0.0-rc1 – новая версия кросс-платформенной виртуальной машины для выполнения скриптов на языке 1С:Предприятие.

В новом релизе глубоко переработана архитектура ядра, появились механизмы для строгой типизации и асинхронности, обеспечена основа под дальнейшее развитие языка.

Но самое главное новшество – это появление компилятора, который строит AST для языка 1С и транслирует его прямо в машинный код.

Реализация новой версии OneScript 2.0 полностью кроссплатформенная и не требует среды исполнения Mono (использует возможности .NET 5.0).

Трансляция кода 1С в машинный код «на лету»

Новый OneScript 2.0 имеет два режима компиляции и выполнения кода: классический (стековая машина) и native – компиляция в код машины .NET.

Кроме того, добавлен класс СкомпилированныйФрагмент, который позволяет превратить строку, которую раньше передавали в оператор «Выполнить», в высокопроизводительный метод.

Класс СкомпилированныйФрагмент

 

 

Поскольку статическая компиляция требует строгой типизации, для использования в таком фрагменте внешних переменных потребуется явно указать их типы – это можно сделать через свойство «Параметры».

При вызове для объекта этого класса метода Скомпилировать() возвращается Действие, выполнение которого вернет результат скомпилированного фрагмента на языке 1С с максимальной производительностью. Код, скомпилированный таким образом, выполняется на уровне производительности .NET, поскольку в конечном счете и является кодом .NET

Подробнее с тем, как работает класс «СкомпилированныйФрагмент» можно ознакомиться в видеоролике на канале «Веселый 1С».

Модули с нативной компиляцией

У файлов с директивой #native автоматически включается режим нативной компиляции – они будут скомпилированы целиком и выполнены новой средой исполнения по тем же правилам, что и СкомпилированныйФрагмент,

Этот код будет строго типизированным, а, поскольку типы переменных определяются компилятором автоматически, не все привычные конструкции языка 1С будут работать. Например, на данный момент в одну и ту же переменную нельзя записать значения разных типов.

Правила конверсии типов, а также языковые средства для явного указания типов планируются в будущих версиях.

То есть сейчас OneScript 2.0 все еще не полностью строго типизированный, но в язык планируется добавить конструкции указания типов у переменных, параметров методов и возвращаемых значений функций. Скорее всего, синтакс указания типов будет похож на тот, что используется в типизации языка 1С:Элемент.

Ограничения новой версии

Из-за особенностей движка .NET Core, на котором разработана архитектура новой версии, не поддерживается упаковка скрипта в единый exe-файл. Разработчики обещают реализовать эту функциональность позднее.

Также несовместимыми становятся внешние компоненты, созданные для предыдущей версии. Потребуется их перекомпиляция под net5

Новые универсальные дистрибутивы

Фреймворк поставляется в виде zip-архивов, которые не требуют установки. Их нужно распаковать в соответствующие директории (и при необходимости прописать в PATH) самостоятельно.

Предусмотрены дистрибутивы x86 для 32-битных сценариев и x64 – для всех остальных случаев.

Появилась универсальная поставка FDD (Framework Dependent Deployment), не зависящая от операционной системы. Исполняемые файлы FDD-поставки будут работать и на Linux и на Windows – для этого на целевой машине должен быть установлен фреймворк .NET 5-й версии.

Кроме этого, доступна самодостаточная поставка SCD (Self Contained Deployment), которая содержит фреймворк в себе и не требует наличия версии .NET на машине. SCD-поставка зависит от операционной системы, поэтому разбивается на версии для Windows и Linux.


Автор:
Аналитик


Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Darklight 32 27.09.22 17:19 Сейчас в теме
Это очень круто! ОЧЕНЬ! Прямо настоящая революция - ну над некоторыми деталями, конечно, ещё надо будет поработать!
Любопытны, конечно, сравнительные тесты производительности....
2. Evil Beaver 8100 27.09.22 17:26 Сейчас в теме
(1) в видеоролике по ссылке я как раз привожу сравнительные тесты производительности
3. Darklight 32 27.09.22 17:31 Сейчас в теме
(2)Спасибо, видеоролик то я и не заметил ;-)
4. tormozit 7133 27.09.22 17:37 Сейчас в теме
5. Evil Beaver 8100 27.09.22 17:42 Сейчас в теме
(4) тут есть нюанс. Обычный код он тоже так компилируется, однако все параметры методов, значения, полученные из универсальных коллекций, результаты функций - словом 90% всех переменных компилируются в строго-типизированный тип "Variant", который как-бы и не строго типизированный, универсальное значение.

Отсюда получается, что типизация строгая, но большая часть переменных - это варианты с динамической диспетчеризацией, которые работают уже не так быстро, а "как раньше".

То есть, вот эта ознакомительная версия, она хоть и с новым компилятором и соблюдает типизацию, но пока не так быстра за счет того, что по большей части все использует все те же "варианты". Указание типов требует изменений синтаксиса и потерю совместимости с 1С. Это будет в следующих версиях, но внедрять это надо постепенно.
6. tormozit 7133 27.09.22 17:54 Сейчас в теме
(5) Для начала можно предложить программистам в критичном к скорости коде использовать типизированные списки значений вместо массивов и по возможности указывать простые типы колонкам таблиц/деревьев значений. Определять все возможные типы результатов функции - это уже надо глубокой (можно ограничить для ускорения) статический анализ делать и можно опереться на документирующие комментарии или менее красивый Если Ложь Тогда. Таким образом уже можно будет заметно поднять количество фиксированных типов у переменных без потери совместимости с оригинальным языком. После потери совместимости с оригинальным языком много плюсов пропадет.
Evil Beaver; +1 Ответить
7. Evil Beaver 8100 27.09.22 18:29 Сейчас в теме
(6) Мало кто захочет так делать. Это же из области наслаждений извращениями. Тотальной потери с оригинальным языком не будет. Только в тех местах, где сам захочешь. Иными словами, написать типизированные списки вместо массивов будет можно и так и так.
8. Darklight 32 28.09.22 09:31 Сейчас в теме
(7)(6)Да просто ввести для имеющихся коллекций дженерики в 1Script - и уже будет хорошо - без указания обобщённых типов - будет по старому Variant (с полной совместимостью синтаксиса) - с указанием - будет какой указали тип. Но тогда как-минимум, нужны будут кортежи - как замена структурам - т.к. в коде 1С структуры частые гости коллекций - а доступ к свойствам структуры (тем более циклический) - это потенциальный тормоз. Ну и что-то надо подумать с ТаблицейЗначения, у которой колонки динамически создаваемые.

На мой взгляд 1Script пора развиваться дальше убого синтаксиса 1С Предприятие 8. Всегда можно стараться остаться в рамках обратной совместимости с классическим синтаксисом 1С. Для редких исключений ввести директивы - переключения совместимости (1С же не брезгует - внедрила свойство конфигурации "Режим совместимости" - и очень медленно вносит изменения в ЯП - правда, по не разрушающие обратную совместимость).
Ну и для особых случаев (когда кто-то захочет переносит код 1Script в 1С Предприятие 8) - можно сделать специальный синтакс-конвертер - который будет линейно конвертировать расширенный код 1Script в код 1С. Та же типизация (в т.ч. через дженерики) конвертируется легко - просто убираем её и все дела (ну можно ещё в комментариях по формату 1С прописать типы) . Кортежи тоже легко в Структуры преобразуются. Да даже ООП классы (если вдруг их ввести в 1Script) можно статически линеризировать в функции со Cтруктурой вместо this (с этим могу помочь - архитектурные наработки есть). И систему делегатов тоже можно в целом перенести. Да тут, конечно, итоговый код будет не красивый - но главное, чтобы работал - в таких вот особо извращённых сценариях переноса из 1Script в 1С Предприятие 8.

Ну а в рамках инфраструктуры 1Script можно вполне себе развиваться без особой оглядки на совместимость с 1С Предприятие 8
Оставьте свое сообщение

См. также

Подписывайтесь на ТГ-канал «Анализ и Управление в ИТ-проектах» и выигрывайте призы

Новость Aнализ&Управление Мероприятия

Инфостарт объявляет розыгрыш призов для всех подписчиков телеграм-канала конференции «Анализ и Управление в ИТ-проектах». Подписывайтесь на канал, участвуйте в розыгрыше и будьте в курсе всех самых актуальных новостей конференции.

сегодня в 10:15    13    AnastasiaKl    0       

0

21 марта – бесплатный вебинар по выгрузке данных из 1С в BI-аналитику

Новость Маркетплейс

На встрече поговорим о том, как автоматизировать работу по выгрузке данных из 1С для последующего анализа в BI-системах. Поможет нам в этом специальный инструмент – «Экстрактор 1С».

вчера в 16:00    191    user997184    0       

1

1С-Коннект как единое окно взаимодействия для сотрудников компании: корпоративная культура в эпоху удаленки

Новость Сервисы ИТС

1С-Коннект – готовое решение для автоматизации техподдержки со встроенным корпоративным мессенджером и возможностью удаленного подключения. Рассказываем об использовании 1С-Коннект и напоминаем, что 26 марта состоится вебинар по новым возможностям.

вчера в 15:50    139    vikad    0       

1

Онлайн-курс по прототипированию интерфейсов в Figma начнется уже сегодня: успейте присоединиться

Новость Обучение

Сегодня, 18 марта, стартует онлайн-обучению по прототипированию интерфейсов 1С. На курсе потренируемся работать с Figma, нарисуем современный баннер, спроектируем командную панель и потренируемся давать обратную связь по прототипам.

вчера в 13:00    145    user997184    0       

1

«Оркестратор 1С» v2.2: парсинг технологического журнала, топология ландшафта 1С и облегченная версия оснастки

Новость Новый релиз Обзор готовых решений

В версии 2.2 продукта мониторинга и управления системами «Оркестратор 1С» появился модуль по разбору технологического журнала, форма для просмотра и отбора записей ТЖ, отчет по распределению событий ТЖ, а также отчет «Топология ландшафта 1С».

вчера в 12:11    319    vikad    0       

1

19 марта – первое занятие по курсу «Использование Канбан Метода для управления потоком задач»

Новость Обучение

На тренинге научимся использовать Канбан Метод для организации эффективной работы и управления задачами в команде. Вы узнаете, как достигнуть равномерной и предсказуемой скорости в работе сотрудников и оправдать ожидания заказчика.

15.03.2024    308    user997184    1       

1

Новый «Урок цифры»: от начинающего до легендарного супертестировщика

Новость Образование

В рамках проекта «Урок цифры» опубликован новый урок от фирмы «1С». Школьникам 1-11 класса рассказывают о преимуществах профессии тестировщика, обучают азам тестирования и предлагают получить сертификат в случае успешного прохождения тренажёров.

15.03.2024    548    ЕленаЧерепнева    0       

3

Два по цене одного: фирма «1С» удваивает пакеты распознавания страниц для новых клиентов сервиса

Новость Сервисы ИТС

Новые пользователи сервиса «1С:Распознавание первичных документов», оплатив определенное количество распознаваний в сервисе, смогут загрузить в два раза больший объем документов. Рассказываем, как воспользоваться специальным предложением от «1С».

14.03.2024    470    ЕленаЧерепнева    0       

15

Бесплатный митап «1С в облаке» уже завтра! Присоединяйтесь к открытому обсуждению опыта экспертов

Новость Infostart Meetup Мероприятия

В эту пятницу, 15 марта в 11:00 мск на Инфостарте состоится бесплатный митап о передовых методах размещения инфраструктуры 1С в облаке. В программе 5 докладов и круглый стол. Успейте зарегистрироваться, будет интересно!

14.03.2024    527    vikad    0       

15

Секция «Программная инженерия»: рассказываем, о чем секция и как попасть в нее с докладом

Новость Aнализ&Управление Мероприятия

До конца приема заявок на доклады оставалось немного времени – дедлайн 19 марта. И мы продолжаем знакомить с секциями конференции «Анализ и Управление в ИТ-проектах», чтобы вам было проще определиться с темой выступления.

14.03.2024    406    AnastasiaKl    0       

16

До конца приема заявок на доклады конференции «Анализ & Управление в ИТ-проектах» осталось 5 дней

Новость Инфостарт Aнализ&Управление Мероприятия

Через 2,5 месяца стартует конференция для аналитиков и руководителей проектов. Если вы готовы делиться знаниями, организовать мастер-класс, воркшоп или другую активность – смело подавайте заявку. Успейте стать докладчиком до 19 марта!

13.03.2024    513    vikad    0       

15

Интервью с Павлом Филатовым о тонкостях работы с Базой знаний, 1С:ЗУП и критикой на Инфостарт

Новость Сообщество

Поговорили с постоянным автором обработок и статей для Базы знаний Инфостарт – Павлом Филатовым. Павел рассказал нам, как пришел в 1С, начал работать с ЗУП и дал советы начинающим авторам статей и обработок.

13.03.2024    773    Sofya_Sukur    3       

10

Единый семинар 1С: выступления экспертов фирмы «1С» и подарки от Инфостарт

Новость Единый семинар 1С Сервисы ИТС

3 апреля 2024 года, в среду, приглашаем бухгалтеров и руководителей присоединиться к традиционному «Единому семинару 1С». Мероприятие пройдет онлайн, а участие в нем бесплатное. Регистрация уже открыта.

13.03.2024    480    vikad    0       

16

Участвуйте в опросе и развивайте сервис 1С-Store вместе с нами

Новость Сообщество

Инфостарт совместно с фирмой «1С» запустил пилот сервиса 1С-Store. Планируем добавить в сервис больше конфигураций. Для этого нам нужна «помощь зала» – пройдите опрос и расскажите, с какими программными продуктами работаете вы.

12.03.2024    620    user997184    0       

17

Бесплатный вебинар по 1С:LIMS: публикуем ответы на вопросы участников

Новость

В конце февраля прошел онлайн-вебинар для всех, кто интересуется вопросами эффективного управления за качеством продукции на производстве. На онлайн-встрече мы подробно рассказали о возможностях решения 1С:LIMS и ответили на вопросы слушателей.

12.03.2024    620    AnastasiaKl    0       

15

КриптоПРО на MacOS заблокирована, но все равно работает

Новость Mac OS Безопасность Сервисы ИТС Цифровая подпись

Некоторые пользователи MacOS столкнулись с проблемой при использовании квалифицированной электронной подписи, которая требует использования криптографии. Проблемы возникли из-за блокировки компанией Apple продуктов КриптоПРО.

12.03.2024    1117    ЕленаЧерепнева    0       

1

Продолжаем рассказывать о секциях конференции «Анализ и Управление в ИТ-проектах»

Новость Aнализ&Управление Мероприятия

Сегодня даем слово модераторам секции «Soft skills, управление командой проекта». Узнайте, как лучше подготовить свою заявку, чтобы она прошла отбор, и какие темы докладов и мастер-классов мы рассматриваем в первую очередь.

12.03.2024    502    AnastasiaKl    0       

15

Система взаимодействия в 8.3.26: больше приватности и обновленная интеграция

Новость Зазеркалье

Официальный технологический блог «Заметки из Зазеркалья» анонсировал новые фичи в Системе взаимодействия, которые должны появиться в технологической платформе 1С:Предприятие 8.3.26. Рассказываем, что ждать от очередного нового релиза.

12.03.2024    659    ЕленаЧерепнева    0       

1

Подорожание продуктов 1С:Предприятие: до 29 марта успейте купить по старой цене

Новость

С 1 апреля 2024 года цены на лицензии, типовые и отраслевые продукты 1С увеличатся на 14-15%. Чтобы сэкономить, позаботьтесь о расширении парка лицензий заранее – оставьте заявку до 29 марта и получите счет на оплату по старой цене.

11.03.2024    1463    ЕленаЧерепнева    0       

16

Минфин пояснил, как учитывать экосбор для налога на прибыль

Новость ИТ-Новость Минфин Налоги

Минфин пояснил, надо ли учитывать расходы на оплату экологического сбора для налога на прибыль. А также как их учитывать и в каком налоговом периоде.

11.03.2024    429    user1915669    0       

1

Онлайн-курс по изучению механизмов платформы «1С:Предприятие»: старт завтра

Новость Обучение Программист

На курсе «”1С:Предприятие” для программистов» вы научитесь легко адаптировать систему под нужды заказчика и делать процесс разработки более гибким с помощью механизма расширений.

11.03.2024    640    AnastasiaKl    4       

16

Памятка: как правильно оформить публикацию в Базе знаний

Новость Инфостарт Сообщество Стартмани

При размещении публикации на Инфостарте важно не только сформулировать свои знания и опыт, но и аккуратно их оформить. Расскажем, о чем нужно помнить при оформлении публикации на Инфостарте и как эффективно использовать возможности редактора сайта.

07.03.2024    1423    vikad    3       

19

Узнайте о новых возможностях 1С-Коннект на бесплатном вебинаре

Новость Сервисы ИТС

26 марта в 11:00 (МСК) приглашаем на бесплатный онлайн-вебинар, где мы расскажем о новых функциональных возможностях сервиса 1С-Коннект. Платформа предназначена для автоматизации технической поддержки, услуг и коммуникаций.

07.03.2024    955    AnastasiaKl    0       

15

Приглашаем на бесплатный вебинар о GitFlic 3.0 – первом российском сервисе для работы с исходным кодом

Новость

11 марта в 14:00 Инфостарт проведет бесплатный вебинар на тему «GitFlic – платформа для разработчиков». Расскажем о преимуществах новой версии сервиса, а также обсудим стратегию обмена идеями между разработчиками для развития ИТ-отрасли.

06.03.2024    1389    vikad    0       

16

Новый сервис «Доки»: работа с электронными документами из 1С через веб-интерфейс

Новость Сервисы ИТС ЭДО

Сервис «Доки» выгружает сформированные в 1С электронные документы в защищенное облако, позволяя согласовывать, подписывать и отправлять их не только в программе 1С, но и из веб-браузера.

06.03.2024    2004    ЕленаЧерепнева    6       

3