Новости Virgil против Rust: сможет ли новичок свергнуть звезду с пьедестала?

NewsMaker

I'm just a script
Премиум
13,854
20
8 Ноя 2022
Чудеса кросс-компиляции и свобода от ограничений в новом языке программирования.


hvqh457wppnhv5638x5pnnh8kkioix7h.jpg


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

  • Виртуальная машина Java 1.3 или более поздней версии
  • Компьютер под управлением Linux x86
  • Компьютер под управлением MacOS X x86

По словам одного из создателей языка, Для просмотра ссылки Войди или Зарегистрируйся , который также принимал участие в разработке WebAssembly, Virgil не ставит своей целью конкурировать с другим молодым языком Zig, предназначенным для подобных задач.

Virgil лишен устаревших недостатков и обладает мощными возможностями для написания надежного системного кода. Среди потенциальных областей применения — виртуальные машины, компиляторы, ядра операционных систем, сетевые стеки и другие низкоуровневые компоненты.

Сейчас, наряду с Rust , появляется много новых языков, ориентированных на создание легковесных высокопроизводительных систем с кроссплатформенными компиляторами. При этом, по утверждению Тицера, Rust не может выполнять некоторые задачи, которые под силу Virgil.

Запустив Warp — терминал на базе Rust, пользователю нужно клонировать репозиторий. Если вы давно не использовали GitHub, команду для клонирования можно найти на главной странице репозитория под вкладкой код:


l3yefnek2smukrt23530im3luqlci70y.png


Теперь мы просто клонируем репозиторий в командной оболочке:


xh2c2hhhfynf0pqxh7p4n5fa66g8v65t.png


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

После установки Virgil можно сразу же приступать к написанию и запуску кода. Вот так будет выглядеть программа «Hello World»:


iyhcnmoewty4y18ubnoo3p5us6gkmqjr.png


Данный код можно запустить со встроенным интерпретатором Virgil:


owxs0ibaik82b0wdprshj38clfvnw84r.png


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


zcchkvf0bmpm7fhg5gw516jzs0f0eokc.png


После компиляции в текущем каталоге появляется исполняемый файл. (Следует учесть, что показанное в Warp время выполнения может не отражать реальную производительность).

Запуск скомпилированного кода выводит приветствие:


ykzl4c1sxr48zdpvtv6tag176ysu8nru.png


Таким образом, Virgil позволяет как интерпретировать, так и компилировать написанный код, адаптируясь к аппаратной платформе.

В языке также используется концепция изменяемых и неизменяемых переменных. Изменяемые переменные вводятся ключевым словом var, а неизменяемые — def:


h2vlkgtv24effs9lb4dkh36rdytdes8t.png


Функции объявляются с указанием типов параметров и возвращаемого значения, например:


w0znmlo2ovsf6g45k55vdc9xuwhot8dx.png


Классы в Virgil имеют схожий с другими ЯП синтаксис:


au1hkwpup9hgfse8qzy6riuwkl6u3eyx.png


Уникальной особенностью являются алгебраические типы данных — комбинация полиморфизма, конструкторов и сопоставления с образцом:


oedo6mebpuy5s5qlcjsqsoq3z16ftx0d.png


В Virgil есть поддержка многопоточности и асинхронного программирования с использованием ключевого слова async:


x18vht1jgulzv3oahr1v2h5yo1hx84nr.png


Язык позволяет напрямую работать с низкоуровневой памятью через опасные необработанные указатели:


c4wx85vjcynsp1myort8zjj209yfgavs.png


Таким образом, Virgil предоставляет возможность эффективной кросс-компиляции, генерируя машинный код или байт-код в зависимости от целевой платформы. Сам язык использует подобный кросс-компилятор, так что весь тулчейн написан на нем же.

Это лишь вводное описание, и многие возможности языка остались за кадром. Очевидно, что проект активно развивается. Программировать можно как в объектно-ориентированном стиле, так и в функциональном, что иногда называют мультипарадигмальным подходом.
 
Источник новости
www.securitylab.ru

Похожие темы