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

27.09.2022      14008

С новой версией 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 8121 27.09.22 17:26 Сейчас в теме
(1) в видеоролике по ссылке я как раз привожу сравнительные тесты производительности
3. Darklight 32 27.09.22 17:31 Сейчас в теме
(2)Спасибо, видеоролик то я и не заметил ;-)
4. tormozit 7144 27.09.22 17:37 Сейчас в теме
5. Evil Beaver 8121 27.09.22 17:42 Сейчас в теме
(4) тут есть нюанс. Обычный код он тоже так компилируется, однако все параметры методов, значения, полученные из универсальных коллекций, результаты функций - словом 90% всех переменных компилируются в строго-типизированный тип "Variant", который как-бы и не строго типизированный, универсальное значение.

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

То есть, вот эта ознакомительная версия, она хоть и с новым компилятором и соблюдает типизацию, но пока не так быстра за счет того, что по большей части все использует все те же "варианты". Указание типов требует изменений синтаксиса и потерю совместимости с 1С. Это будет в следующих версиях, но внедрять это надо постепенно.
6. tormozit 7144 27.09.22 17:54 Сейчас в теме
(5) Для начала можно предложить программистам в критичном к скорости коде использовать типизированные списки значений вместо массивов и по возможности указывать простые типы колонкам таблиц/деревьев значений. Определять все возможные типы результатов функции - это уже надо глубокой (можно ограничить для ускорения) статический анализ делать и можно опереться на документирующие комментарии или менее красивый Если Ложь Тогда. Таким образом уже можно будет заметно поднять количество фиксированных типов у переменных без потери совместимости с оригинальным языком. После потери совместимости с оригинальным языком много плюсов пропадет.
Evil Beaver; +1 Ответить
7. Evil Beaver 8121 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
Оставьте свое сообщение

См. также

Купите участие в конференции «Анализ и Управление в ИТ-проектах 2024» до повышения цен

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

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

25.04.2024    226    user997184    0       

15

Разработка прикладных решений с помощью Библиотеки стандартных подсистем: курс по 1С-программированию

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

15 мая стартует онлайн-курс «1С: Библиотека стандартных подсистем для начинающих». На курсе мы будем изучать инструментарий разработчика и создавать прикладные решения на основе Библиотеки стандартных подсистем (БСП).

24.04.2024    1137    AnastasiaKl    0       

16

Знакомимся с модератором секции «Открытый микрофон» и продолжаем прием заявок

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

Секция «Открытый микрофон» обрела своего модератора – им стала постоянный докладчик конференций Инфостарт, Елена Дуюн. Знакомимся с Еленой поближе и напоминаем, как подать заявку на доклад для «Открытого микрофона», если вы еще этого не сделали.

23.04.2024    405    user997184    0       

15

Что будем осваивать в мае: онлайн-курс «1C:Предприятие для программистов: Запросы и отчеты»

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

14 мая на Инфостарт начнется обширный онлайн-курс по запросам и возможностям системы компоновки данных в 1С:Предприятии.

23.04.2024    524    user997184    0       

16

Вышла 1С:Предприятие 8.3.25: в новом релизе платформы 55 доработок и 9 оптимизаций

Новость Платформа 1С v8.3 Зазеркалье

В релизе 8.3.25 платформа 1С научилась генерировать речь из текста, обновила средства разработки и администрирования, а также по многочисленным просьбам профессионального сообщества – расширила свой встроенный язык долгожданным методом ВызватьПаузу.

23.04.2024    5752    ЕленаЧерепнева    2       

3

3 главных причины участвовать в конференции «Анализ и Управление в ИТ-проектах» по VIP-пакету

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

Сегодня поговорим о VIP-тарифе, который предусматривает еще больше преимуществ, и расскажем, что входит в пакет.

22.04.2024    726    user997184    0       

17

Конференция «Анализ и Управление в ИТ-проектах»: что нас ждет на вечеринке

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

Конференция для аналитиков и управленцев пройдет в Санкт-Петербурге и продлится три дня. Традиционное развлекательное мероприятие для всех участников конференции Инфостарт – афтепати в первый вечер мероприятия. Рассказываем, что будет на вечеринке.

22.04.2024    508    AnastasiaKl    0       

15

1С:Предприятие 8.3.26: обновление стандарта ЕСИА и поддержка присоединенной ЭП

Новость Платформа 1С v8.3 Зазеркалье

Фирма «1С» анонсировала дополнительные возможности для работы с электронной подписью в технологической платформе 8.3.26. И сообщила о поддержке нового стандарта 3.34 для Единой системы идентификации и аутентификации (ЕСИА).

22.04.2024    589    ЕленаЧерепнева    0       

3

Готова программа конференции «Анализ и управление в ИТ-проектах»

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

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

19.04.2024    1014    eselyanina    0       

16

Выпуск новой редакции 1С:PLM 5 и начало продаж модуля PLM для 1С:ERP

Новость 1С:ERP Управление предприятием 2

Фирма «1С» сообщила об обновлении линейки решений 1С:PLM для автоматизации управления жизненным циклом изделия и инженерными данными. А также предупредила о снятии с продаж устаревших версий и скором прекращении их поддержки.

19.04.2024    714    ЕленаЧерепнева    0       

2

Новинка на Инфостарт: онлайн-курс «Автоматизированное тестирование в 1С»

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

6 мая запускаем новый курс от Инфостарт, где мы научимся пользоваться самым популярным и открытым фреймворком тестирования для платформы 1С:Предприятие 8 – Vanessa Automation.

19.04.2024    948    AnastasiaKl    5       

17

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

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

Заявки с вашими нетиповыми интеграциями продолжают поступать, поэтому мы ненадолго продлеваем прием. Теперь «заявиться» на конкурс можно до 20 апреля включительно.

17.04.2024    654    user997184    1       

2

Как использовать SmartWay в 1С для планирования командировок

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

Smartway – решение для планирования и организации командировок, разработанный на базе российского ПО. Просто задайте направления и даты, а Smartway сравнит цены на билеты или гостиницы в режиме реального времени, предложит выгодные варианты

17.04.2024    958    user997184    0       

17

Расширяем возможности типового 1С-ЭПД: автозаполнение электронной транспортной накладной для нескольких реализаций

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

Из документа «Транспортная накладная», входящего в состав расширения «Мастер ТТН», теперь можно отправлять ЭТрН через типовую подсистему 1С-ЭДО, расширяя ее возможности автозаполнением всех требуемых реквизитов.

16.04.2024    739    Olga_Amelchenkova    0       

4

Приглашаем на первый бесплатный вебинар Комплексного курса по управлению ИТ-проектами

Новость Обучение Руководитель проекта

17 апреля стартует Комплексный курс по управлению ИТ-проектами. Курс начнется с бесплатного welcome-вебинара, где мы поговорим о компетенциях современного руководителя и расскажем подробно о программе курса.

16.04.2024    872    AnastasiaKl    1       

14

Обновлены материалы для подготовки к сертификации по 1С:ERP

Новость 1С:ERP Управление предприятием 2

Фирма «1С» доработала материалы для подготовки к тестированиям 1С:Профессионал и 1С:Специалист-консультант по конфигурации 1С:ERP Управление предприятием 2. С 26 апреля тестирование будет проводиться по обновленному комплекту вопросов.

16.04.2024    626    ЕленаЧерепнева    0       

1

Фирма «1С» возглавила ежегодный рейтинг франшиз по версии РБК

Новость ИТ-Новость

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

15.04.2024    641    ЕленаЧерепнева    0       

2

Фирма «1С» дополнила перечень продуктов, которые подорожают с 1 июля 2024 года

Новость

Обновление прайс-листа 1С на типовые и отраслевые лицензии в этом году проводится в два этапа – с 1 апреля и 1 июля. В список конфигураций, которые подорожают летом, добавлено еще несколько позиций.

15.04.2024    1781    ЕленаЧерепнева    0       

1

Сегодня, в 12:00, стартует бесплатный вебинар Марии Темчиной по разбору ошибок в управлении ИТ-проектами

Новость Обучение Руководитель проекта

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

15.04.2024    1197    AnastasiaKl    0       

2

Обновление «1С:Документооборот КОРП 3.014»: очень много приятных мелочей

Новость

В релиз «1С:Документооборот КОРП 3.014» вошли улучшенные интеграции с 1С-сервисами: они расширяют возможности конфигурации. Улучшена функциональность самого продукта – разработчики добавили новые инструменты для работы с документами и файлами.

12.04.2024    1869    ЕленаЧерепнева    0       

2

Бесплатный онлайн-вебинар «1С:Аналитика – BI-система на платформе 1С»

Новость

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

11.04.2024    1976    AnastasiaKl    1       

15

Отвечаем на вопрос: зачем публиковать свои решения в Базе знаний Инфостарт

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

Если вы еще сомневаетесь, вливаться ли в наше сообщество, обязательно прочитайте эту статью.

11.04.2024    1117    Sofya_Sukur    6       

26

Фирма «1С» актуализировала состояние плана задач для 1С:Предприятие 8.3.27

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

Опубликован перечень задач, которые планируется реализовать для технологической платформы версии 8.3.27. Большая часть задач отмечена как выполненные, часть перенесена на следующий релиз, задач со статусом «в работе» в плане не осталось.

10.04.2024    831    ЕленаЧерепнева    0       

2

Учет по проектам в 1С Бухгалтерии v 2.9: главные обновления

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

Учет рабочего времени по проектам и распределение заработной платы по отработанным часам в новой версии расширения «Учет по проектам в 1С:Бухгалтерии 3.0». Рассказываем об обновлениях подробнее.

09.04.2024    1232    user997184    0       

2