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

Автор Сообщение
news_bot ®

Стаж: 6 лет 3 месяца
Сообщений: 27286

Создавать темы news_bot ® написал(а)
13-Ноя-2023 12:07

После 40 дней разработки опубликована новая версия статически типизированного языка программирования V (vlang). Основными целями при создании V были простота изучения и использования, высокая читаемость, быстрая компиляция, повышенная безопасность, эффективная разработка, кроссплатформенное использование, улучшенное взаимодействие с языком C, лучшая обработка ошибок, современные возможности и более удобное сопровождение программ. Код компилятора, библиотек и сопутствующих инструментов открыт под лицензией MIT.
В новой версии:
  • Улучшения в языке:
    • Новый модуль "encoding.xml с парсером, валидацией, unit-тестами.
    • Улучшенная поддержка couroutines (IO, сеть).
    • Сокращение операций выделения памяти в vweb-приложениях на 80%.
    • Реализация "@VCURRENTHASH" для замены "C.V_CURRENT_COMMIT_HASH".
    • Начато продвижение нового типа int, сопоставленного с типом i64 (ранее тип int был отождествлён с типом i32).
    • Исправление правил проверки типов для нового типа 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
===========

Похожие новости: Теги для поиска: #_vlang
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 19-Май 19:24
Часовой пояс: UTC + 5