Релиз языка программирования V 0.4.3

Новости мира unix. Хотите узнать секрет вечного счастья? Откройте страницу 246.
Ответить
acolyte
Аватара пользователя
Сообщения: 3255
Зарегистрирован: 20.08.2022

#

Релиз языка программирования V 0.4.3
Дата публикации:Mon, 13 Nov 2023 08:40:46 +0300




После 40 дней разработки опубликована новая версия статически типизированного языка программирования V (vlang). Основными целями при создании V были простота изучения и использования, высокая читаемость, быстрая компиляция, повышенная безопасность, эффективная разработка, кроссплатформенное использование, улучшенное взаимодействие с языком C, лучшая обработка ошибок, современные возможности и более удобное сопровождение программ. Код компилятора, библиотек и сопутствующих инструментов открыт под лицензией MIT.



В новой версии:
  • Улучшения в языке:

    Новый модуль "encoding.xml с парсером, валидацией, unit-тестами.
    Улучшенная поддержка couroutines (IO, сеть).
    Сокращение операций выделения памяти в vweb-приложениях на 80%.
    Реализация "@VCURRENTHASH" для замены "C.V_CURRENT_COMMIT_HASH".

    Начато продвижение нового типа int, сопоставленного с типом i64 на 64-битных системах и i32 на 32-битных.

    Исправление правил проверки типов для нового типа int и оптимизация генерации кода.
Изменения в API, нарушающие совместимость:
  • Словарь "Request.cookies" объявлен устаревшим. На замену пришли "Request.cookie()" и "Request.add_cookie()".
    Более строгие правила для типов C, которые теперь всегда должны быть объявлены.
Изменения системы проверки типов:
  • Предупреждение о разделении option/result переведено в категорию ошибок.
    Исправление вызова "fn" с необязательным аргументом в режиме autofree.
    Вернулась проверка нейминга: pascal case для алиасов.
    C.xx = C.yy алиасы.
    Разрешено приведение целочисленных типов как диапазонов (ranges) в блоках math.
    Предупреждение об устаревании типа byte (в пользу типа u8) при использовании его в качестве параметра fn.
    Исправление метода append для дженерик массивов.
    Проверка ошибки реализации приватного интерфейса другого модуля.
    Исправлена проверка отрицательных значений cap, len при инициализации массива.
    Превращение предупреждения о дублировании имён модулей var и param в ошибку.
    Разрешить переназначение общей переменной целиком (с сохранением прежнего состояния мьютекса).
Улучшения парсера:
  • Исправлено назначение статического метода анонимным функциям.
    ast: исправлено форматирование объявления struct с вложенной структурой.
    Добавлены методы set_all + clear_all к битовым полям "[flag]".
    Предупреждение о неиспользуемых импортах, даже если они объявлены через "import math { sin, cos }".
Изменения в компиляторе:
  • checker, builder, pref: поддержка флага "-dump-defines" для просмотра всех доступных пользовательских и системных определений данной программы.
    maps: добавлены функции maps.merge() и maps.merge_in_place().
Стандартная библиотека:
  • builtin: добавлен метод "unsafe { a.reset() }" для быстрой установки всех байтов в массиве в 0.
    math.fractions: использование перегрузки операторов и отказ от старых функций.
    gg: исправлено выравнивание нижней границы draw_rounded_rect_empty на macos и linux.
    crypto.bcrypt: исправлена ошибка в bcrypt.
    sokol: обновлён до последней версии
    builtin: исправлен sizeof(C.BOOL) (специфично для windows).
    math.big: исправление неправильного деления с отрицательными числами.
    os: добавлен удобный способ игнорирования некоторых системных сигналов.
    os: исправление os.ls(folder) в windows, когда защищённый каталог не может быть открыт.
    crypto.sha/md5/: исправлено вычисление одинаковых значений хэша при многократном вызове .sum() для sha1/256/512.
    os: реализованы os.fd_is_pending/1, os.Process.pipe_read/1, os.Process.is_pending/1.
    json2: добавлена поддержка вложенных структур.
Web
  • vweb: добавлены mime типы для статических .md-файлов.
    net.conv: добавлены функции varinttou64 и u64tovarint для кодирования переменных беззнаковых целых чисел, описанного в rfc-9000 (для QUIC).
    net.http: поддержка указании функций обратного вызова on_running, on_stopped, on_closed в http.Server{}, а также show_startup_message: false.
    net.http: поддержка передачи HTTP-прокси-сервера в http.fetch.
    net.http: добавить механизм повторных попыток в http.fetch() при неизбежных ошибках сокета.
    wasm: реализован inline assembly.
    net.http: до 16-ти увеличено значение max_redirects.
    picoev: реализация режима raw для прямой работы с файловыми дескрипторами.
    net.http: для unix-подобных систем добавлена поддержка socks5 и http(s) прокси.
ORM:
  • orm: добавлена обработка значение null и необязательных полей.
    orm: Операции is_null/is_not_null сделаны унарными.
Драйверы баз данных:
  • pg: сишные вызовы перенесены в .c.v файлы.
Native backend:
  • native: поддержка флага -no-builtin (генерация исполняемых файлов < 1 КБ Linux с помощью "v -no-builtin -b native examples/hello_world.v").
    native: использование i32 вместо int.
Си-бэкенд:
  • ast, native, cgen: добавлена поддержка "$if native {}".
vfmt:
  • Теперь убирает дополнительные переносы строк после call_expr и перед аргументами структуры.
    Исправлено выравнивание значений при использовании ключей с символами uft8.
    Выравнивание тернарных выражений в блоках const.
Инструментарий:
  • Добавлена поддержка @LOCATION, для более удобной отладки без необходимости комбинировать @FILE и @LINE во время выполнения.
    benchmark: добавлены новые методы b.record_measure/1 и b.all_recorded_measures/0.
    ci: обновлен github workflow c2v.
    strings: добавлен метод Bulder.write_decimal/1 (для записи десятичного числа, без дополнительных аллокаций).
    Исправлена установка уже существующего модуля с помощью vpm (windows).
    tools.vpm: улучшена работа с адресами, заканчивающимися на ".git".
    Добавлено требование наличия файла v.mod для установки модулей через внешние ссылки при помощи vpm.


Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=60101

Жизнь за Нер'зула!

Ответить