From 5f7b862d5ed88842c9d5b046fa5c617272e62eeb Mon Sep 17 00:00:00 2001 From: codex Date: Tue, 26 Aug 2025 00:39:43 -0500 Subject: [PATCH] Fix .NET Standard compatibility: - Replace double.DegreesToRadians/RadiansToDegrees with Math-based conversions - Replace Random.Shared with thread-local Random for thread safety --- src/StandardLibrary/Functions/Angle/Degrees.cs | 4 ++-- src/StandardLibrary/Functions/Angle/Radians.cs | 4 ++-- src/StandardLibrary/Functions/Random/RandomBase.cs | 12 +++++------- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/StandardLibrary/Functions/Angle/Degrees.cs b/src/StandardLibrary/Functions/Angle/Degrees.cs index 222153b..4535a9c 100644 --- a/src/StandardLibrary/Functions/Angle/Degrees.cs +++ b/src/StandardLibrary/Functions/Angle/Degrees.cs @@ -26,8 +26,8 @@ var input = _args[0].Value; decimal value = Convert.ToDecimal(input.Value); - // Convert radians to degrees - return new FunctionValue(FunctionValueType.Numeric, double.RadiansToDegrees((double)value)); + // Convert radians to degrees (compatible with .NET Standard) + return new FunctionValue(FunctionValueType.Numeric, (double)value * (180.0 / Math.PI)); }); } } diff --git a/src/StandardLibrary/Functions/Angle/Radians.cs b/src/StandardLibrary/Functions/Angle/Radians.cs index ebcc3d6..9df8aa2 100644 --- a/src/StandardLibrary/Functions/Angle/Radians.cs +++ b/src/StandardLibrary/Functions/Angle/Radians.cs @@ -26,8 +26,8 @@ var input = _args[0].Value; decimal value = Convert.ToDecimal(input.Value); - // Convert degrees to radians - return new FunctionValue(FunctionValueType.Numeric, double.DegreesToRadians((double)value)); + // Convert degrees to radians (compatible with .NET Standard) + return new FunctionValue(FunctionValueType.Numeric, (double)value * (Math.PI / 180.0)); }); } } diff --git a/src/StandardLibrary/Functions/Random/RandomBase.cs b/src/StandardLibrary/Functions/Random/RandomBase.cs index 8578e43..36edced 100644 --- a/src/StandardLibrary/Functions/Random/RandomBase.cs +++ b/src/StandardLibrary/Functions/Random/RandomBase.cs @@ -8,13 +8,11 @@ namespace CSMic.StandardLibrary.Functions.Random { public abstract class RandomBase : FunctionBase { - protected static System.Random RandomNumberGenerator - { - get - { - return System.Random.Shared; - } - } + // Provide a thread-local random to approximate Random.Shared in .NET Standard + private static readonly System.Threading.ThreadLocal s_threadLocalRandom = + new System.Threading.ThreadLocal(() => new System.Random()); + + protected static System.Random RandomNumberGenerator => s_threadLocalRandom.Value!; protected static decimal NextDecimal() {