The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Открыты исходные тексты языка программирования V"
Отправлено opennews, 24-Июн-19 10:56 
Переведён (https://github.com/vlang/v/releases) в разряд открытых компилятор для языка V (https://vlang.io/). V представляет собой компилируемый в машинный код язык со статической типизацией, сосредоточенный на решении задач по упрощению сопровождения разработки и обеспечению очень высокой скорости компиляции. Код компилятора, библиотек и сопутствующих инструментов открыт (https://github.com/vlang/v) под лицензией MIT.

Синтаксис V во многом походит на язык Go с заимствованием некоторых конструкций из Oberon, Rust и Swift. Язык максимально упрощён и, по заявлению разработчика, для изучения базовых основ достаточно 30 минут на изучение документации (https://vlang.io/docs). При этом язык остаётся достаточно мощным и может применяться для выполнения тех же задач, что и при использовании других языков программирования.


К созданию нового языка побудило желание добиться баланса между свойственным языку Go простоты синтаксиса, скорости компиляции, простоты распараллеливания операций, переносимости и сопровождаемости  кода с производительностью С/C++, защищённостью Rust и генерацией машинного кода на этапе компиляции Zig. Также хотелось получить компактный и быстрый компилятор, способный работать без внешних зависимостей, избавиться от глобальной области видимости (глобальных переменных) и обеспечить возможность "горячей" перезагрузки кода.

По сравнению с C++ новый язык существенно проще, обеспечивает более высокую скорость компиляции (до 400 раз!), практикует приёмы безопасного программирования, избавлен от проблем с неопределённым поведением и предоставляет встроенные средства для распараллеливания операций. По сравнению с Python язык V быстрее, проще, безопаснее и удобнее в сопровождении. По сравнению с Go в V нет глобальных переменных, нет null, все значения переменных всегда обязательно должны быть определены, все объекты по умолчанию являются неизменяемыми (immutable), поддерживается только один вид присвоений ("a := 0"), существенно более компактный runtime и размер итоговых исполняемых файлов, наличие прямой переносимости с Си, отсутствие сборщика мусора, более быстрая сериализация, возможность интерполяции строк ("println('$foo: $bar.baz')").

  fn main() {
    areas := ['game', 'web', 'tools', 'science', 'systems', 'GUI', 'mobile']
    a := 10
    if true {
        a := 20
    }
    for area in areas {
        println('Hello, $area developers!')
    }
   }    


Особенности проекта:


-  Компактный и быстрый компилятор, который вместе со стандартной библиотекой занимает около 400 КБ. Высокая скорость компиляции достигается благодаря прямой генерации машинного кода и модульности. Скорость компиляции составляет примерно 1.2 млн строк кода в секунду на одном ядре CPU (Intel i5-7500 @ 3.40GHz). Самосборка компилятора, который также написан на языке V (также имеется эталонный вариант на Go), занимает примерно 0.4 сек. К концу года ожидается завершение работы над дополнительными оптимизациями, которые позволят уменьшить время сборки компилятора до 0.15 сек. Для сравнения самосборка Go требует 512 Мб дискового пространства и выполняется за полторы минуты, Rust требует 30 Гб и 45 минут, GCC - 8 ГБ и 50 минут, Clang - 90 Гб и     25 минут,
Swift -    70 ГБ и     90 минут;


-  Программы компилируются в исполняемые файлы без внешних зависимостей. Размер исполняемого файла простого http-сервера после сборки составляет всего 65 КБ;

-  Производительность скомпилированных приложений находится на уровне сборок программ на языке Си;

-  Возможность бесшовного взаимодействия с Си-кодом, без дополнительных накладных расходов. Из кода на языке V могут вызываться функции на языке Си и наоборот, код на языке V может вызываться в любых языках, совместимых с Си;


-  Поддержка трансляции проектов на C/C++ в представление на языке V.  Для трансляции используется парсер от Clang. Не все возможности стандарта Си пока поддерживаются, но текущих возможностей транслятора уже достаточно для перевода (https://github.com/vlang/doom) на язык V игры DOOM. Транслятор с C++ пока находится на начальной стадии развития;

-  Встроенная поддержка сериализации, без привязки к runtime;

-  Минимизация операций распределения памяти;

-  Обеспечение безопасности: отсутствие NULL, глобальных переменных, неопределённых значений и переопределения переменных. Встроенные средства для проверки выхода за границы буфера. Поддержка обобщённых функций  (Generic). Не изменяемые по умолчанию  объекты и структуры;

-  Возможность "горячей" перезагрузки кода (отражения изменений в коде на лету без перекомпиляции);

-  Средства для обеспечения многопоточности. Как в языке Go для запуска нового потока выполнения используется конструкция вида "run foo()" (по аналогии с "go foo()"). В будущем планируется поддержка goroutines и планировщика потоков;

-  Поддержка операционных систем Windows, macOS, Linux, *BSD. До конца года планируется добавить поддержку Android и iOS;


-  Управление памятью на этапе компиляции (как в Rust), без применения сборщика мусора;


-  Наличие многоплатформенного тулкита для вывода графики, использующего для отрисовки GDI+/Cocoa и OpenGL (в планах поддержка API DirectX, Vulkan и Metal). Имеются средства для работы с 3D-объектами, скелетной анимацией и управления камерой.

-  Наличие библиотеки для формирования графических интерфейсов с родными для каждой ОС элементами оформления. В Windows используется WinAPI/GDI+, в macOS - Cocoa, в Linux - собственный набор виджетов. Библиотека уже используется при разработке  Volt (https://volt-app.com/) - клиента для Slack, Skype, Gmail, Twitter и Facebook.

Планируется создание похожего на Delphi приложения для проектирования интерфейса, предоставление декларативного API, похожего на SwiftUI и React Native, и обеспечение поддержи создания мобильных приложений для  iOS и Android;

-  Поддержка кросс-компиляции. Для сборки исполняемого файла для Windows достаточно запустить "v -os windows", а для Linux -  "v -os linux" (поддержка кросс-компиляции для macOS ожидается позднее). Кросс-компиляция в том числе работает и для графических приложений;

-  Встроенный менеджер зависимостей, пакетный менеджер и инструментарий сборки. Для сборки программы достаточно запустить "v .", без  использования make и внешних утилит. Для установки дополнительных библиотек достаточно выполнить, например, "v get sqlite";

-  Наличие встроенного web-фреймворка, которые использован для создания сайта, форума и блога разработчиков проекта. Поддерживается предкомпиляция HTML-шаблонов, без из обработки при каждом запросе;

-  Наличие плагинов для разработки на языке V в редакторах  VS Code (https://github.com/0x9ef/vscode-vlang) и Vim (https://github.com/ollykel/v-vim).

URL: https://www.reddit.com/r/vlang/comments/c3wpnb/v_has_been_op.../
Новость: https://www.opennet.ru/opennews/art.shtml?num=50944

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру