-
Notifications
You must be signed in to change notification settings - Fork 3
v0.0.94.3 #326
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
В конструктор LimitedStream добавлены проверки на отрицательные Offset и DataLength (ArgumentOutOfRangeException). Исправлена обработка Seek за пределы диапазона (теперь выбрасывается ArgumentOutOfRangeException). Добавлены свойства для явного управления возможностями чтения/записи, события Disposing/Disposed и свойство AsReadOnly. В WriteByte теперь используется _BaseStream.WriteByte. В тестах добавлены проверки на выброс исключений и тест на корректную запись байта. Улучшены комментарии и сообщения об ошибках.
Добавлен класс ResourceLockInfo для хранения семафора и счётчика активных блокировок каждого ресурса. Словарь _Resources теперь содержит ResourceLockInfo вместо SemaphoreSlim. Логика Lock/Unlock обновлена: увеличивается/уменьшается счётчик блокировок, семафор удаляется и уничтожается только при отсутствии активных блокировок. Исправлен порядок освобождения и удаления семафоров. В тестах MultipleAccessTest теперь выполняется параллельно для 25 итераций и не игнорируется.
Снят Ignore с теста GetPirsonsCriteriaTest, добавлен XML-комментарий и подробный вывод промежуточных результатов в консоль (критерий, степени свободы, среднее, дисперсия, квантиль). Обновлены ожидаемые значения и логика проверки. Удалены устаревшие значения.
Расширена документация на русском языке для структур YieldAsyncAwaitable и YieldAsyncAwaiter, все структуры объявлены как readonly для повышения безопасности. Свойство IsCompleted и методы снабжены подробными XML-комментариями. Удалён неиспользуемый делегат SendOrPostCallback. Улучшена читаемость и самодокументирование кода.
Добавлен extension-метод Yield(bool LockContext) для Task, позволяющий явно переключать выполнение в поток из пула потоков с возможностью сохранения исходного контекста синхронизации. Метод возвращает YieldAwaitableThreadPool. Добавлены соответствующие XML-комментарии.
Обновлены версии BenchmarkDotNet, MathCore.WPF и ряда системных NuGet-пакетов (System.Drawing.Common, System.IO.Hashing, System.IO.Pipelines, System.Linq.Async, System.Text.Json, Microsoft.CodeAnalysis.CSharp.Scripting, Microsoft.Extensions.Hosting) в соответствующих проектах для повышения стабильности и совместимости.
Полностью переработан класс CRC32: теперь он поддерживает различные режимы и параметры (полином, начальное значение, XOR, отражение входа/выхода), реализует инкрементальное и потоковое вычисление, асинхронные методы, кэширование таблиц. Статические методы переписаны и оптимизированы. Существенно расширены и обновлены модульные тесты: добавлены проверки для разных режимов, потоков, асинхронных сценариев, больших данных и кэширования. Класс и тесты теперь соответствуют промышленным стандартам CRC-32.
Проведён масштабный рефакторинг классов CRC8, CRC16, CRC64: - Введены полноценные параметры состояния (State, Polynomial, InitialValue, XOROut, RefIn, RefOut). - Добавлены методы для потоков (Stream) и асинхронные версии (ComputeAsync, HashAsync). - Используется кэширование таблиц коэффициентов через ConcurrentDictionary. - Методы ContinueCompute теперь работают с массивами, Span, Stream. - Добавлены статические методы Hash с поддержкой всех параметров. - Методы ComputeChecksumBytes возвращают массив байт. - Удалены устаревшие методы с IEnumerable и передачей CRC по ссылке. - Улучшена документация, исправлена логика отражения битов. - В Hash теперь выбрасывается ArgumentNullException при null. Обновлены тесты: исправлены вызовы, добавлены smoke-тесты, закомментированы спорные эталонные значения. В Benchmark-классе свойство TestStringValue стало public. Улучшена поддержка многопоточности и асинхронности.
Добавлены методы-расширения для вычисления CRC-8, CRC-16, CRC-32 и CRC-64 (синхронные и асинхронные) для потоков Stream с поддержкой пользовательских параметров. Методы доступны для .NET 5.0 и выше и не требуют загрузки всех данных в память. Добавлены подробная документация (StreamExtensions.CRC.md) и модульные тесты, покрывающие все варианты использования и параметры.
Добавлены синхронные и асинхронные методы вычисления CRC-8, CRC-16, CRC-32, CRC-64 для файлов в FileInfoExtensions с поддержкой настройки параметров. Для новых методов добавлены XML-комментарии. В проект тестов добавлен файл с модульными тестами, покрывающими различные сценарии использования CRC-методов. Исправлена опечатка в XML-комментарии к GetStringLines.
В StringExtensions добавлены подавления предупреждений SYSLIB для поддержки устаревших API. В SelectableCollection<T> свойство IList.this теперь nullable, а методы Contains и IndexOf переписаны на switch-выражения для лаконичности. В ConsoleTest.csproj закомментированы зависимости System.IO.Pipelines и System.Text.Json.
В проект добавлены методы-расширения для вычисления CRC-8, CRC-16, CRC-32, CRC-64 для строк с поддержкой настройки параметров. Методы ComputeSHA256 и ComputeMD5 перенесены в отдельный partial-класс. Добавлены модульные тесты для проверки корректности вычислений CRC. Обновлены using-директивы и объявление класса StringExtensions.
В файл MathCore.Algorithms.csproj добавлена зависимость SixLabors.ImageSharp версии 3.1.12 для расширения возможностей работы с изображениями. Остальные зависимости не изменялись.
Удалён старый файл решения MathCore.sln, добавлен новый MathCore.slnx в формате XML. Новый файл явно описывает проекты, платформы, папки и служебные файлы, а также индивидуальные параметры сборки для некоторых проектов. Это упрощает управление структурой решения и поддерживает современные инструменты.
В шапках nuget-ver-remote.cs, nuget-ver-wait.cs и xml-xpath.cs изменён путь к dotnet-раннеру с /usr/local/share/dotnet/dotnet на /usr/local/bin/dotnet для корректного запуска скриптов.
Добавлен параметр ShapeResult во все методы LoadCSV и конструктор InterpolatorNDLinear. При его активации результат интерполяции ограничивается минимальным и максимальным значениями из исходных данных. Реализовано вычисление этих границ при инициализации. Теперь можно управлять поведением "обрезки" результата при загрузке данных из CSV.
Выровнены объявления переменных и массивов для единообразия стиля, убраны лишние пробелы. В тесте Value_Test увеличена допустимая погрешность сравнения с 2.0e-15 до 5.0e-15. Логика тестов не изменена.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
No description provided.