Данная новость является вольным переводом официальной заметки на сайте SourceMod с замечаниями и правками от переводчика
Оригинал можно прочитать здесь
Новой стабильной веткой SourceMod теперь является версия 1.10. Как и всегда, некоторое время для старой ветки 1.9 будут доступны обновления геймдаты.
Новая версия включает в себя правки сообщества от следующих классных людей: headline, SlidyBat, PerfectLaugh, quasemago, Technoblazed, InvexByte, TiBarification, Pelipoika, Peace-Maker, thewavelength, rumblefrog, jason-e, Kailo,
CrazyHackGUT, rsKliPPy, fakuivan, maximsmol, Silenci0, hydrogen-mvm, Hexer10, ddhoward, Bara, PowerLord, TheByKotik, komashchenko, BotoX, b3none, DJPlaya, PerfectLaugh, 404UNFca, JoinedSenses, TheDS1337, Batfoxkid, MartLegion, FortyTwoFortyTwo и Einyux.
Основные моменты этого релиза включают в себя:
- Новый синтаксис для структур, оформленных с помощью enum. Подробнее - на нашей вики.
- Поддержка 64-битных версий SRCDS.
- Новые нативы для получения большего объёма информации касательно трассировки.
- Обновлённая библиотека MySQL с поддержкой кодировки
utf8mb4
.
- Новая команда для перезагрузки кеша
databases.cfg
без перезапуска сервера: sm_reload_databases
- Повышение скорости компиляции за счёт многочисленных исправлений и изменений.
- Изменение структуры бинарного файла плагина для будущих улучшений языка.
- Улучшение стабильности и качества кода ядра.
- Улучшение методмапов и документации API.
Все изменения, которые мы произвели в этой версии
(замечание: изменения, помеченные знаком звёздочки, были так же перенесены и в SM 1.9):
Изменения SourceMod
- [Исправление] Работа над багом CS:GO, связанный с таблицами строк (см. PR #1046)
- [Исправление] Упрощение внутренностей логгера (см. PR #691)
- [Исправление] Ошибка, вызывающая падение процесса из-за NULL в указателях на строки (см. PR #906) *
- [Исправление] Возможность устанавливать
-1
/null
в полях attacker
и inflictor
в хуке движка OnTakeDamage
- [Исправление]
CompileRegex()
не всегда устанавливал корректный код ошибки (см. PR #775)
- [Исправление] Компиляция с использованием Visual Studio 2017 и выше
- [Исправление] SDKHooks: Сброс глобального идентификатора хука при снятии хука в Sourcehook (см. PR #916)
- [Исправление] Предотвращение ошибок, связанных с использованием FrameIterator (см. PR #949) *
- [Исправление] Улучшение текста ошибки для
EmitSound()
(см. PR #787)
- [Исправление]
BfRead.BytesLeft
не был необязательным (см. PR #945) *
- [Исправление] IBinTools: Блокировка загрузки несовместимых версий интерфейсов (см. PR #979)
- [Исправление] Исправление неправильного пути к файлу
matchmaking_ds
, который использовался в некоторых случаях (см. проблему #1006)
- [Исправление] Удаление лишнего использования
MAPLIST_FLAG_NO_DEFAULT
в стандартных плагинах (см. PR #870)
- [Исправление] Исправление ошибки при переходе на резервную секцию
default
в маплистах (см. PR #923)
- [Исправление] Исправление неправильного расчёта оставшегося времени после
mp_restartgame
в CS:S и CS:GO (см. PR #1072)
- [Исправление] Новые нативы methodmap теперь опциональны (см. PR #867)
- [Исправление] Удаление повторного форматирования в
ReplyToCommand()
(см. PR #932) *
- [Исправление] Опечатка в PassType (см. PR #1018)
- [Исправление] Улучшение описания в консольных переменных плагина номинаций карт (см. PR #758)
- [Исправление] Улучшение описания у нативов
CharToLower()
и CharToUpper()
(снова) (см. PR #750)
- [Исправление] Исправление ошибки очередности параметров в документации к
CancelClientMenu()
(см. PR #982)
- [Исправление] Улучшение документации в реализациях methodmap (см. PR #788)
- [Исправление] Использование
GetClientAuthId()
в FormatUserLogText()
(см. PR #805)
- [Исправление] Добавлен отсутствующий вызов
MarkNativeAsOptional()
для SetAuthIdCookie()
(см. PR #879)
- [Исправление] Отправка сообщений
ShowActivity()
для клиентов SourceTV (см. PR #813)
- [Исправление] Исправление ошибок, вызываемых
sm_help
при вызове во время процесса подключения (см. PR #723)
- [Исправление] basevotes: Увеличение размера буфера для карт Workshop (см. PR #956)
- [Исправление] Исправление неправильного форматирования
Vote Delay Minutes
когда задержка около 60 секунд (см. PR #1009)
- [Новое] Поддержка 64-битной версии CS:GO для Linux и MacOS (см. PR #705)
- [Новое] Добавление нативов трассировки (
TR_EnumerateIntities()
, TR_EnumerateEntitiesHull()
, TR_ClipRayToEntity()
, TR_ClipRayToEntityEx()
, TR_ClipRayHullToEntity()
, TR_ClipCurrentRayToEntity()
, TR_ClipCurrentRayToEntityEx()
) (см. PR #754)
- [Новое] Добавление натива
Tr_GetHitBoxIndex()
(см. PR #1085)
- [Новое] Добавление натива
RemoveEntity()
(см. PR #745)
- [Новое] Добавление команды
sm_reload_databases
(см. PR #773)
- [Новое] Добавление поддержки 64-битных целых чисел в методмапе Protobuf (см. PR #943)
- [Новое] Разрешение различных значений для платформы в секции
Keys
в геймдате (см. PR #765)
- [Новое] Открытие меню при наличии нескольких карт на неопределенный фильтр для команды
!nominate
(см. PR #983)
- [Новое] Добавление натива
Regex.MatchAll()
и исправление поведения MatchRegex()
для соответствия документации (см. PR #767)
- [Новое] MySQL: Поддержка нескольких наборов результатов в подготовленных запросах (см. PR #825)
- [Новое] Добавление натива
LogStatckTrace()
(см. PR #685)
- [Новое] Добавление натива
Protobuf.HasField()
- [Новое] Добавление методмапа
CommandIterator
, включающий CommandIterator.Plugin
для получения плагина, зарегистрировавшего команду (см. PR #819)
- [Новое] Добавление отсутствующего возвращаемого значения в документации для
CreateDirectory()
- [Новое] Исправление различных регрессий и неопределенного поведения (см. PR #1022)
- [Улучшение] Обновление поддержки игр для CS:GO, BMS, Empires, NMRiH, Insurgency, PVKII, IOSoccer, ZPS *
- [Улучшение] Перемещение семантики для
StringHashMap
(см. PR #589)
- [Улучшение] Удаление блокировки конфигурации БД (см. PR #791)
- [Улучшение] Добавление описания для
TFCond
(см. PR #1005)
- [Улучшение] Добавление методмапа
Profiler
(см. PR #814)
- [Улучшение] Добавление методмапа
GameData
(см. PR #766)
- [Улучшение] Добавление методмапов
GlobalForward
и PrivateForward
(см. PR #1004)
- [Улучшение] Добавление методмапа
Cookie
(см. PR #1012)
- [Улучшение] Добавление геттера для
Event.BroadcastDisabled
(см. PR #946)
- [Улучшение] Добавление методов
Sort()
и SortCustom()
в методмап ArrayList
(см. PR #1003)
- [Улучшение] Добавление метода
File.Flush()
(см. PR #1056)
- [Улучшение] Обновление
TF2_IgnitePlayer()
для поддержки установки длительности горения (см. PR #1038)
- [Улучшение] Добавление вспомогательного шаблонного класса для повышения безопасности типов для вызовов функций (см. PR #965)
- [Улучшение] Добавление дополнительных специфичных для TF2 константных
DMG_
значений (см. PR #756)
- [Улучшение] Добавление дополнительного идентификатора нестандартного убийства для TF2 (см. PR #972)
- [Улучшение] Добавление щита и отталкивающая мина в
cstrike.inc
(см. PR #991)
- [Улучшение] Разрешение возвращать любые значения в каллбеках нативов (см. PR #857)
- [Улучшение] Добавление
RequestFrameCallback
с опциональным параметром для данных (см. PR #1068)
- [Улучшение] Обновление
sm_ban
, sm_kick
и sm_map
для отображения меню, если выполняются без аргументов (см. PR #838)
- [Улучшение] Использование кол-ва нулей в зависимости от кол-ва плагинов для вывода в
sm plugins list
(см. PR #1027)
- [Улучшение] Улучшение текста ошибки для
CreateNative()
(см. PR #903)
- [Улучшение] Использование настоящей сортировки для списков карт (см. PR #907)
- [Улучшение] Добавление интернационализации (переводов) для basechat и исправление цветов для CS:GO (см. PR #674)
- [Улучшение] Переход сеттеров/геттеров клантегов CS:GO на использование нетпропов + смещение по сигнатуре + смещение (см. PR #922)
- [Улучшение] Стандартизация поиска карт среди движков, подобных TF2 (см. PR #931)
- [Улучшение] Изменение
MultiTargetFilter
на typeset, позволяющий использование ArrayList
(см. PR #955)
- [Улучшение] Удаление использования оператора
goto
в ExtensionSys.cpp
(см. PR #729)
- [Улучшение] SQL Admin Manager: Чистка кода (см. PR #974)
- [Прочее] Переписывание реализации
DataPack
(см. PR #688)
- [Прочее] Прекращение использования примитивных функций float в угоду стандартным операторам (см. PR #763)
- [Прочее] Обновление клиентской библиотеки MySQL до версии 5.5 (поддержка кодировки
utf8mb4
) (см. PR #786)
- [Прочее] Обновление библиотеки SQLite до версии 3.26.0 (см. PR #783 и #935)
- [Прочее] Увеличение размера константы
MAX_NAME_LENGTH
для соответствия константе CS:GO MAX_PLAYER_NAME_LENGTH
- [Прочее] Использование безопасного
strcpy
где это возможно (см. PR #784 и #785)
- [Прочее] Удаление интерфейса
IDataPack
(см. PR #864)
- [Прочее] Обновление параметров в примере расширения для более sourcehook-friendly (хз даже как это правильнее всего перевести, чтобы было понятно - прим. переводчика) (см. PR #886)
- [Прочее] Добавление инструкции компилятора
#deprecated
для GetMaxClients()
(см. PR #818)
- [Прочее] Добавление инструкции компилятора
#deprecated
для FormatUserLogText()
(см. PR #856)
- [Прочее] Очистка кода официальных плагинов (см. PR #777)
- [Прочее] Исправление сборки на GCC 9 (см. PR #1024)
- [Прочее] Добавление инструкции компилятора
#deprecated
для SQL_QuoteString()
(см. PR #792)
- [Прочее] Добавление пометки о зависимости
FormatTime()
от платформы (см. PR #908)
Изменения SourcePawn
(в этом разделе возможна наибольшая концентрация ошибок и ляпов перевода, т.к. пункты в нём даны сложным техническим языком, и как именно перевести их без потери смысла - сложный вопрос. в данном разделе лучше смотреть приводимые ссылки к ознакомлению и читать шапку обсуждения + дискуссию, чем полагаться полностью на текст. некоторые пункты в переводе убраны насовсем из-за сложности представления - прим. переводчика)
- [Исправление] Исправление ошибки, связанной с инициализацией динамического
char[]
(см. PR #176)
- [Исправление] Исправление утечки типа HEA при использовании оператора
break
в вложенных скоупах (см. PR #207)
- [Исправление] Исправление ошибки, связанной с
return
в switch
(см. проблему #236)
- [Исправление] Исправление ошибки, приводящей к крашу при индексировании массива с помощью литерала (см. PR #286)
- [Исправление] Исправление ошибки, приводящей к крашу при использовании плохо сформированного if выражения (см. PR #297)
- [Исправление] Исправление ассерта, который срабатывал на неопределенном массиве (см. PR #290)
- [Исправление] Исправление ошибки, приводящей к крашу при включении профилировщика (см. PR #316)
- [Исправление] Уничтожение поддержки нескольких кодировок и исправление ошибки при запуске компилятора, приводившей к segmentation fault (см. PR #238)
- [Исправление] Ослабление проверки типов для неявно прототипированных функций (см. PR #371)
- [Исправление] Исправление опции запуска компилятора
-D
(см. PR #259)
- [Исправление] Поиск стандартного include-файла в путях с инклудами
- [Исправление] Увеличение счётчика ошибок при срабатывании фатальной ошибки (см. PR #171)
- [Исправление] Исправление segmentation fault в DocGen (см. PR #185)
- [Исправление] Исправление неправильного отладочного
codestart
в переменных структуры (см. PR #309)
- [Исправление] Исправление регистрации инкрементов/декрементов в интерпретаторе (см. PR #190)
- [Исправление] Исправление анонимной конкретизации методмапа (?!? - прим. переводчика) (см. PR #206)
- [Исправление] Запрет ссылок на неопределенные аргументы массива (см. PR #315)
- [Исправление] Удаление использования
pow10()
и прокладки для поддержки libc 2.27+ (см. PR #208)
- [Исправление] Исправление некорректного упоминания проблемного файла в тексте ошибки когда отсутствует семиколон (точка с запятой) (см. PR #331)
- [Исправление] Запрет на переопределение typedefs и typesets (см. PR #351)
- [Исправление] Исправление ошибки, когда неиспользованные функции, помеченные
stock
, всё равно попадали в бинарный файл (см. PR #366)
- [Исправление] Исправление предупреждения когда не-стоковые функции используются стоковыми функциями (?!? - прим. переводчика) (см. PR #352)
- [Новое] Добавлен новый переходный синтаксис для структур (см. PR #287)
- [Новое] Добавлена директива компилятора
#warning
(см. PR #170)
- [Новое] Добавлена константа
__LINE__
(см. PR #180)
- [Новое] Добавлены метаданные RTTI и заменены старые секции с отладочными символами (см. PR #210)
- [Новое] Копирование отладочного названия функции в стек для краш дампов (см. PR #159)
- [Новое] Добавление базовой поддержки отладочного API для брейкпоинтов (см. PR #216)
- [Новое] Полная поддержка базовых операций с плавающими числами в
spshell
(см. PR #195)
- [Новое] Замена поля
codeversion
на поле поддерживаемых особенностей (см. PR #198)
- [Улучшение] Добавлена оптимизация для
not
(см. PR #165)
- [Улучшение] С++-фикация кода компилятора
- [Улучшение]Улучшение скорости компиляции
- Улучшение скорости компиляции за счёт оптимизации stgwrite (см. PR #183)
- Оптимизация компиляции для больших глобальных массивов (см. PR #184)
- Переписан лексер (см. PR #264)
- Улучшение производительности компилятора при обработке символов
- Переписано обрезание символов (см. PR #269)
- Полный постоянный переход на UTF-8 (см. PR #270)
- Удаление абстракции
MEMFILE
(см. PR #274)
- Удаление трёх проходов при кодогенерации (см. PR #277)
- Исправление утечек памяти (см. PR #280)
- Замена макро-листа на хэш-таблицу (см. PR #282)
- Удаление
cmptag
(см. PR #260)
- [Улучшение] Упрощение инлайн фреймов выхода (см. PR #345)
- [Улучшение] Расширение семантики в инструкции
RETN
(см. PR #192)
- [Улучшение] Представление нового способа кодирования массивов
- [Улучшение] Перенос проверок стэка в "function prologue" (см. PR #223)
- [Прочее] Совмещение реализации HALT с интерпретатором и верификатором (см. PR #175)
- [Прочее] Удалены
then
, begin
и end
токены (см. PR #161)
- [Прочее] Удалено
#pragma rational
(см. PR #193)
- [Прочее] Удалены неиспользуемые константы, вроде
cellbits
, charmin
(см. PR #360)
- [Прочее] Добавлена команда
-v
/ --version
в spshell
с выводом доступности JIT'а (см. PR #203)
- [Прочее] Добавлен аргумент компилятора
-z
, позволяющий настроить степень сжатия (см. PR #272)
- [Прочее] Улучшение тестов (см. PR #204)
- [Прочее] Исправление сборки на XCode 10 и выше (см. PR #326)
- [Прочее] Использование clang-форматирования для проверки стиля кода (см. PR #340)
На странице загрузки
стабильных сборок теперь располагается SM 1.10. Страница с
разрабатываемыми сборками теперь ссылается на новый SM 1.11.
Большое спасибо
Peace-Maker за написание этого новостного поста для нас!
Источник