Repository navigation
·
11 commits
to master-n3
since this release
What's Changed
What's Changed
- fix Analyzer settings for v3.10.1 release by @superboyiii in #1927
- Release phase 2: Update v3.10.1 internal dependency by @superboyiii in #1928
- Fix: the result consumed by JMPIF by @Wi1l-B0t in #1929
- Docs: link unsupported syntax diagnostics to guidance by @Jim8y in #1935
- Fix:
char.IsBetweenreturns wrong result if value > max by @Wi1l-B0t in #1930 - Fix: ignore self references in contract dependency graphs by @Jim8y in #1933
- Fix: preserve UTF-8 bytes during string casing by @Jim8y in #1932
- Test: require Neo analyzer errors for Roslyn-supported probes by @Jim8y in #1931
- Fix: encode runtime char values as UTF-8 strings by @Jim8y in #1934
- Fix:
string.EndsWithreturns wrong result if value is empty by @Wi1l-B0t in #1936 - Fix: no stackitem to throw in
Math.Absby @Wi1l-B0t in #1937 - Fix: some wrong descriptions for
OpCodeby @Wi1l-B0t in #1939 - Optimize: less opcodes and GAS for
HandleBigIntegerPopCountby @Wi1l-B0t in #1940 - Fix: no stackitem to throw in
Math.BigMulby @Wi1l-B0t in #1938 - Fix: validate all BigInteger constructor overloads by @Jim8y in #1945
- Fix: diagnose floating-point casts and literals by @Jim8y in #1944
- Test: bind unsupported syntax probes to diagnostic IDs by @Jim8y in #1943
- Test: keep unsupported syntax summary synchronized by @Jim8y in #1941
- Fix: diagnose qualified System.Linq usage by @Jim8y in #1942
- Optimize: less opcodes and GAS if shift amount is a constant value by @Wi1l-B0t in #1949
- Fix: the stack not clear before
THROWin the checked left shift by @Wi1l-B0t in #1948 - Optimize: less opcodes and GAS for integer.log2 by @Wi1l-B0t in #1950
- Fix: the stack not clear before
THROWin theCheckDivideOverflowby @Wi1l-B0t in #1951 - Optimize - replace CONVERT with NZ for bool ^ bool expressions by @ajara87 in #1953
- Optimize: less opcodes and GAS for integer popcount by @Wi1l-B0t in #1952
- Optimize: less opcodes and GAS for Int.IsPow2 by @Wi1l-B0t in #1956
- Fix: add exception message for
Char.Parseby @Wi1l-B0t in #1955 - Optimize: less opcodes and GAS for string methods by @Wi1l-B0t in #1957
- Optimize: less opcodes and GAS for TryParseWithOut methods by @Wi1l-B0t in #1958
- Optimize: replace EQUAL+JMPIF with JMPEQ in EmitSwitch case dispatch by @ajara87 in #1954
- Optimize: less opcodes and GAS for
string.IsNullOrWhiteSpaceby @Wi1l-B0t in #1959 - Optimize: less opcodes and GAS for
Math.BigMulby @Wi1l-B0t in #1947 - Optimize: less opcodes and GAS for converting
BigIntegerto small signed integer by @Wi1l-B0t in #1946 - Optimize: less opcodes for
Enum.Parse&Enum.IsDefinedby @Wi1l-B0t in #1962 - Cover Ownable2Step storage marker collisions by @Jim8y in #1967
- Preserve Cdecl receiver evaluation order by @Jim8y in #1963
- Bound Coverlet sequence point ranges by @Jim8y in #1966
- Optimize: less opcodes for
EmitSwitchby @Wi1l-B0t in #1961 - Preserve Assert argument evaluation order by @Jim8y in #1965
- Less opcodes and GAS for LeadingZeroCount by @Wi1l-B0t in #1969
- Less opcodes and GAS for
string.EndsWithby @Wi1l-B0t in #1970 - Optimize char.IsLetter/char.IsAsciiLetter using ASCII case folding by @ajara87 in #1972
- Preserve expanded params evaluation order by @Jim8y in #1964
- Less opcodes and GAS for
string.Insertby @Wi1l-B0t in #1974 - Optimize BigInteger.GreatestCommonDivisor: replace PUSH0+JMPEQ/JMPNE with JMPIFNOT/JMPIF by @ajara87 in #1976
- Less opcodes for
char.IsLetterOrDigitby @Wi1l-B0t in #1977 - Assert BitOperations gas consumption by @Jim8y in #1979
- Assert StringBuilder gas consumption by @Jim8y in #1978
- Optimize NUL char normalization for string.Contains(char) and string.IndexOf(char) by @ajara87 in #1975
- Fix expected gas values by @ajara87 in #1973
- Strengthen checked Int32 division overflow test by @Jim8y in #1987
- Fix mixed named and positional argument binding by @Jim8y in #1985
- Optimize char.IsBetween by @ajara87 in #1971
- Fix: char.IsAscii by @Wi1l-B0t in #1988
- Move
HandleLengthtoSystem.Array.cs. by @Wi1l-B0t in #1989 - Fix lifted nullable binary operator semantics by @Jim8y in #1986
- Fix: convert recursive InstructionCoverage.CoverInstruction to an iterative algorithm to prevent StackOverflowException by @ajara87 in #1981
- Fix signed DivRem overflow handling by @Jim8y in #1984
- Don't convert bool contant value to integer by @Wi1l-B0t in #1990
- Fix signed remainder overflow handling by @Jim8y in #1983
- Less opcodes and GAS for integer switch by @Wi1l-B0t in #1991
- Less opcodes and GAS for NumericTryParseWithOut by @Wi1l-B0t in #1992
- Less opcodes and GAS for
string.EndsWithby @Wi1l-B0t in #1993 - Less opcodes and GAS for NumericCreateChecked by @Wi1l-B0t in #1995
- Less opcodes and GAS for
Enum.HasFlagby @Wi1l-B0t in #1994 - Less GAS for bool xor assign operation by @Wi1l-B0t in #1997
- Fix class override virtual table construction and lookup by @Jim8y in #1999
- Preserve static initializers when constant folding is invalidated by @Jim8y in #2000
- Fix:
BigInteger.ToByteArrayshould return [0x00] if zero by @Wi1l-B0t in #1996 - Fix: execution fault if value is zero for
Helper.ToByteArrayby @Wi1l-B0t in #2014 - Keep unsigned bitwise complements within their declared width by @Jim8y in #2004
- Fix private method detection for short calls by @Jim8y in #2013
- Apply custom contract mocks to CALLT invocations by @Jim8y in #2010
- Preserve exported ABI names in NEP member checks and fixes by @Jim8y in #2007
- Fix field initializer binding across referenced projects by @Jim8y in #2005
- Include all contract storage in backward RPC seeks by @Jim8y in #2011
- Reject checkpoints truncated inside a storage record by @Jim8y in #2012
- Prevent accumulator overflow in integer Average overloads by @Jim8y in #2006
- Allow null and default static framework field initializers by @Jim8y in #2008
- Fix: execution fault if value is zero for
Helper.AsSbyteby @Wi1l-B0t in #2016 - Fix nullable integral cast range handling by @Jim8y in #2001
- Resolve named StorageMap prefix arguments by parameter binding by @Jim8y in #2009
- Less opcodes and GAS for
NumericParseby @Wi1l-B0t in #2018 - Preserve lifted nullable unary semantics by @Jim8y in #1998
- Less GAS for
LinqExtensionsby @Wi1l-B0t in #2020 - Less opcodes and GAS for
Enum.ToStringby @Wi1l-B0t in #2021 - Less opcodes and GAS for
String.Removeby @Wi1l-B0t in #2022 - Fix: don't load string instance by
LdArg0by @Wi1l-B0t in #2023 - Less opcodes for enum methods by @Wi1l-B0t in #2024
- Fix: don't load trim-char by LdArg1 by @Wi1l-B0t in #2026
- Less opcodes and GAS for StringBuilder methods by @Wi1l-B0t in #2025
- Preserve argument evaluation order for calls with ref and out parameters by @Jim8y in #2003
- Less opcodes and GAS for string to lower by @Wi1l-B0t in #2027
- Fix: wrong result if pad with
'\0'forstring.PadLeft/PadRightby @Wi1l-B0t in #2033 - Test: cover 64-bit arithmetic overflow boundaries by @Jim8y in #2029
- Test: cover malformed and incomplete contract source by @Jim8y in #2028
- Test: validate Neo C# profile evidence references by @Jim8y in #2032
- Test: keep unsupported syntax diagnostics in stable order by @Jim8y in #2031
- Preserve instance receiver evaluation before call arguments by @Jim8y in #2002
- Less opcodes and GAS for char.IsWhiteSpace & string.IsNullOrWhiteSpace by @Wi1l-B0t in #2035
- Docs: document integer overflow and narrowing conversion semantics by @Jim8y in #2030
- Less opcodes for Enum methods by @Wi1l-B0t in #2036
- CI: run validation selectively for affected changes by @Jim8y in #2041
- Add
string.LastIndexOf(char)by @Wi1l-B0t in #2034 - Fix compiler crash with single-parameter InitialValueAttribute by @Jim8y in #2038
- Fix default(T?) generating empty struct instead of null by @Jim8y in #2039
- Fix stack imbalance in generic Enum.TryParse with ignoreCase by @Jim8y in #2043
- Simplify redundant two-operand conditional jumps in RemoveUnnecessaryJumps by @Jim8y in #2049
- Fix ContractSourceCodeAttribute dead code - Source field never populated by @Jim8y in #2040
- Fix non-ASCII char search in string.Contains and string.IndexOf by @Jim8y in #2045
- Less opcodes and GAS for NumericTryParseWithOut&BoolTryParseWithOut by @Wi1l-B0t in #2050
- Less opcodes and GAS for
string.Trim/TrimStart/TrimEndwith const trimmed char by @Wi1l-B0t in #2042 - docs: add security and contribution guidance by @Jim8y in #2057
- Less opcodes and GAS for
ConvertCharToUtf8by @Wi1l-B0t in #2046 - ci: add dependency maintenance and CodeQL by @Jim8y in #2058
- Build(deps): Bump actions/setup-dotnet from 5 to 6 by @dependabot[bot] in #2069
- Build(deps): Bump actions/delete-package-versions from 4 to 5 by @dependabot[bot] in #2064
- Build(deps): Bump github/codeql-action from 3 to 4 by @dependabot[bot] in #2066
- Build(deps): Bump actions/setup-python from 4 to 7 by @dependabot[bot] in #2068
- Build(deps): Bump actions/checkout from 7.0.0 to 7.0.1 by @dependabot[bot] in #2065
- Build(deps): Bump codecov/codecov-action from 6 to 7 by @dependabot[bot] in #2067
- Bump coverlet.collector from 6.0.4 to 10.0.1 by @dependabot[bot] in #2070
- Bump JsonSchema.Net from 9.2.2 to 9.4.0 by @dependabot[bot] in #2071
- Bump Microsoft.NET.Test.Sdk from 17.14.1 to 18.10.1 by @dependabot[bot] in #2075
- Bump System.CommandLine from 2.0.9 to 2.0.12 by @dependabot[bot] in #2079
- Bump ReportGenerator.Core from 5.4.8 to 5.5.11 by @dependabot[bot] in #2078
- Less opcodes for enum methods by @Wi1l-B0t in #2081
- Less opcodes and GAS for
Enum.TryParsewith constant ignoreCase by @Wi1l-B0t in #2080 - Bump Microsoft.CodeAnalysis.Analyzers and 2 others by @dependabot[bot] in #2074
- test: cover peephole optimizer rewrites by @Jim8y in #2089
- Support findstorage key-cursor pagination in RpcStore by @Jim8y in #2084
- Fix:
EnumGetNamewith non-constanttypeofby @Wi1l-B0t in #2082 - test: cover zero-value NEP-17 receiver callbacks by @Jim8y in #2092
- Bump MSTest.TestFramework from 3.9.3 to 4.4.1 by @dependabot[bot] in #2083
- test: add deterministic compiler fuzz corpus by @Jim8y in #2095
- fix(security): reject late token callback authorization by @Jim8y in #2086
- refactor: centralize project contract discovery by @Jim8y in #2088
- Fix non-ASCII trim character handling in string.Trim variants by @Jim8y in #2047
- Bump Moq from 4.20.72 to 4.21.0 by @dependabot[bot] in #2102
- test: expand malformed source coverage by @Jim8y in #2100
- feat: add deterministic gas snapshot comparisons by @Jim8y in #2094
- fix: stabilize compiler diagnostic ordering by @Jim8y in #2099
- Optimize RotateLeft/RotateRight inverse offset calculation by @ajara87 in #2091
- fix: separate NFT token state and claim storage by @Jim8y in #2063
- test: cover signed division and remainder boundaries by @Jim8y in #2097
- test: cover nested nullable conditional access by @Jim8y in #2098
- Optimize HandleStringLastIndexOf by @ajara87 in #2090
- test: expand example contract coverage by @Jim8y in #2052
- docs: add release changelog by @Jim8y in #2096
- refactor: invoke optimizer strategies through delegates by @Jim8y in #2093
- fix: correct GAS transfer data in example by @Jim8y in #2062
- Add storage-state regression tests for ExitGuard and ExecutionEngine.Abort by @Jim8y in #2048
- fix: block typed catch clauses in contracts by @Jim8y in #2104
- docs: link platform API diagnostics by @Jim8y in #2108
- test: cover optimizer strategy rewrites by @Jim8y in #2105
- fix(security): detect mutual recursive calls by @Jim8y in #2087
- test: cover analyzer handling of generated code by @Jim8y in #2106
- test: verify deterministic analyzer execution by @Jim8y in #2107
- Fold constant conditional jumps to reduce GAS by @Jim8y in #2051
- feat: add machine-readable compiler diagnostics by @Jim8y in #2101
- Test analyzer code fix idempotence by @Jim8y in #2113
- Test packaged analyzer with an external consumer by @Jim8y in #2114
- Parallelize unit tests and cache Roslyn semantic diagnostics to reduce UTs time by @ajara87 in #2103
- fix: reject duplicate system call handlers by @Jim8y in #2112
- fix: classify unsupported control flow failures by @Jim8y in #2111
- docs: link numeric type diagnostics by @Jim8y in #2117
- test: validate profile documentation anchors by @Jim8y in #2116
- test: cover nullable operator truth tables by @Jim8y in #2119
- ci: run profile validation for profile changes by @Jim8y in #2118
- feat: add gas snapshot assertions by @Jim8y in #2115
- fix: make generated artifact ordering culture invariant by @Jim8y in #2110
- Fix: warning MSTEST0044 by @Wi1l-B0t in #2121
- Less opcodes and GAS for
ByteStringExtensionby @Wi1l-B0t in #2122 - Less opcodes and GAS for
Skip<T>&Take<T>by @Wi1l-B0t in #2120 - Fix: warning MSTEST0017&MSTEST0032 by @Wi1l-B0t in #2124
- Use NUMEQUAL&NUMNOTEQUAL instead of EQUAL&NOTEQUAL for integer by @Wi1l-B0t in #2123
- fix(security): flag unused CheckWitness results by @Jim8y in #2085
- Less opcodes and GAS for
string.IndexOf(char)if char is constant value by @Wi1l-B0t in #2125 - test: add semantic differential matrix by @Jim8y in #2131
- test: validate profile diagnostic catalog IDs by @Jim8y in #2130
- docs: document NC2010 range receiver guidance by @Jim8y in #2127
- Less opcodes and GAS for string.EndsWith(string) if suffix is a constant value by @Wi1l-B0t in #2132
- test: expand compiler fuzz control flow by @Jim8y in #2129
- test: add deterministic analyzer fuzz corpus by @Jim8y in #2128
- Remove obsolete CreateGasWatcher by @ajara87 in #2134
- Remove MSTEST0052 warning by @ajara87 in #2133
- Remove MSTEST0030 warning by @ajara87 in #2135
- Less opcodes and GAS for
if (expression == 0)by @Wi1l-B0t in #2139 - Less opcodes and GAS for
string.EndsWith(string)if suffix is constant single byte by @Wi1l-B0t in #2136 - Less opcodes and GAS for AccessControl by @Wi1l-B0t in #2126
- Less opcodes and GAS for
Enum.TryParsewith constant ignoreCase by @Wi1l-B0t in #2138 - Less opcodes and GAS for
ConvertLiftedBinaryExpressionby @Wi1l-B0t in #2140 - Less opcodes and GAS for enum.ToString if enum is a constant value by @Wi1l-B0t in #2137
- Less GAS for
string.StartsWith(string)if prefix is constant single byte by @Wi1l-B0t in #2141 - Less opcodes and GAS for
EmitLiftedNullableBooleanOperatorby @Wi1l-B0t in #2142 - Preserve GAS snapshot integrity and report differences by @Jim8y in #2143
- Analyze and fix target-typed BigInteger constructors by @Jim8y in #2144
- Less opcodes and GAS for EmitLiftedComplexAssignmentOperator by @Wi1l-B0t in #2148
- Validate concrete profile evidence and help references by @Jim8y in #2146
- Less opcodes and GAS for
ConvertConditionalAccessAssignmentby @Wi1l-B0t in #2150 - Less opcodes and GAS for nullable BoolOr by @Wi1l-B0t in #2151
- Less opcodes and GAS for null checking by @Wi1l-B0t in #2149
- Resolve Parse initializers semantically and qualify fixes by @Jim8y in #2145
- Add SARIF output for compiler and analyzer diagnostics by @Jim8y in #2147
- Fix: diagnose legacy default InitialValue fields by @Jim8y in #2155
- Fix: diagnose all StringBuilder property writes by @Jim8y in #2154
- Less opcodes and GAS for
if (expression != 0)by @Wi1l-B0t in #2152 - Less opcodes and GAS for ConvertLiftedShiftExpression by @Wi1l-B0t in #2157
- Less opcodes and GAS for
value == falseorvalue == trueby @Wi1l-B0t in #2158 - Less opcodes and GAS for
string.Replaceby @Wi1l-B0t in #2159 - Fix BigInteger.PopCount for large positive values by @ajara87 in #2162
- Expand compiler fuzz coverage for nullable expressions by @Jim8y in #2168
- Add a compiled gas snapshot regression baseline by @Jim8y in #2164
- Generate XML documentation for source packages by @Jim8y in #2166
- Establish maintainability rule thresholds for new code by @Jim8y in #2165
- Less opcodes and GAS for
new string(string/char, count)by @Wi1l-B0t in #2176 - Fix debug artifact names and unmapped source locations by @Jim8y in #2180
- docs: complete analyzer diagnostic help links by @Jim8y in #2170
- Reject malformed RPC storage records by @Jim8y in #2177
- test: guard system call registration coverage by @Jim8y in #2173
- test: guard analyzer diagnostic parity by @Jim8y in #2172
- Less opcodes and GAS for
string.Replaceby @Wi1l-B0t in #2175 - Correct field and exported-name declaration diagnostics by @Jim8y in #2181
- Preserve symbol and argument binding in analyzer code fixes by @Jim8y in #2178
- Fix baseline build warnings by @Jim8y in #2169
- Fix: use
JMP_Linstead ofJMPto avoidJMPtoo short in SystemCall.Enum by @Wi1l-B0t in #2182 - Less opcodes and GAS for
for loopwith integer compare condition by @Wi1l-B0t in #2153 - Fix coverage aggregation and empty-method boundaries by @Jim8y in #2179
- Optimize: skip unnecessary operations for StringBuilder.Append("") by @ajara87 in #2160
- Align SDK compiler with the analyzer Roslyn baseline by @Jim8y in #2183
- Less opcodes and GAS for
string.Compareby @Wi1l-B0t in #2163 - Keep SupportedStandards code actions compilable by @Jim8y in #2185
- Diagnose constant Notify names across invocation forms by @Jim8y in #2188
- Preserve enum widths and nullable values in test results by @Jim8y in #2184
- Correct Cobertura source and branch coverage export by @Jim8y in #2187
- bench: add analyzer performance harness by @Jim8y in #2171
- Fix Unicode separators in string.Split by @ajara87 in #2161
- Add a BenchmarkDotNet harness for compiler performance by @Jim8y in #2167
- test: verify analyzer diagnostics across cultures by @Jim8y in #2174
- Preserve StringBuilder receiver changes made by Append arguments by @Jim8y in #2193
- Fix: validate checkpoint entries before restore by @Jim8y in #2156
- Validate storage imports before changing existing data by @Jim8y in #2186
- Diagnose unsupported collection member types by @Jim8y in #2192
- Convert contract results using only instance members by @Jim8y in #2191
- Accept omitted debug collections and preserve document indexes by @Jim8y in #2190
- Correct Coverlet branch paths and execution counts by @Jim8y in #2189
- Pad strings with UTF-8 padding characters by @Jim8y in #2196
- Less opcodes and GAS for string.Concat with empty constants by @ajara87 in #2194
- Diagnose unsupported types in member signatures by @Jim8y in #2198
- Call indexer getters for conditional element access by @Jim8y in #2197
- Reject cyclic RPC storage pagination by @Jim8y in #2200
- Report string concatenation inside loops by @Jim8y in #2195
- Convert nullable struct and character test results by @Jim8y in #2199
- Preserve user-defined conversions in BigInteger code fixes by @Jim8y in #2201
- fix: expand extern constructors when the declaring assembly has no syntax by @Jim8y in #2202
- fix: resolve tuple element indexes and pack DivRem results in tuple order by @Jim8y in #2204
- test: cover notification argument order and signature verification by @Jim8y in #2205
- fix: remove nullable warning from notification test event by @Jim8y in #2206
- fix: discard values from void expression lambdas by @Jim8y in #2207
- fix: support conditional delegate invocation by @Jim8y in #2209
- fix: preserve tuple assignment semantics by @Jim8y in #2208
- fix: make divide-by-zero observable to catch blocks by @Jim8y in #2212
- Stop rewriting PUSH2 ADD/SUB to INC INC/DEC DEC in UseIncDec by @ajara87 in #2214
- fix: preserve by-ref storage across branches and aliases by @Jim8y in #2210
- fix: dispatch user-defined operators to their operator methods by @Jim8y in #2211
- fix: make DivRem observable to catch blocks on a zero divisor by @Jim8y in #2217
- fix: dispatch by-ref arguments through aliased virtual tables by @Jim8y in #2218
- Fix optimizer replacing fall-through conditional jumps with DROPs by @ajara87 in #2215
- fix: diagnose embedded initializers and lower index initializers by @Jim8y in #2216
- Fix tuple element indices in compound assignments and mutations by @shargon in #2221
- fix: reject ref reassignment across unsupported control flow by @Jim8y in #2222
- Fix custom property and indexer mutations on contracts without instance state by @shargon in #2220
- test: cover evaluation order side effects by @Jim8y in #2225
- test: cover stack item comparison boundaries by @Jim8y in #2224
- test: cover string slice and search boundaries by @Jim8y in #2223
- test: cover nullable conditional boundaries by @Jim8y in #2227
- fix: initialize captured loop control variables by @Jim8y in #2226
- fix: restore evaluation stack depth when entering a catch handler by @Jim8y in #2213
- Chore: add some gas consumed asserts by @Wi1l-B0t in #2232
- Less opcodes and GAS for ByteString extensions by @Wi1l-B0t in #2233
- Optimize ByteString.IsAlphabet with ASCII case folding and a single WITHIN by @ajara87 in #2235
- Fix:
Helper.AsBytewill be fail if value is 0 by @Wi1l-B0t in #2234 - Optimize BigInteger.IsEven and IsOdd using bitwise AND by @ajara87 in #2236
- Optimize StringBuilder.AppendLine with constant strings by @ajara87 in #2237
- Fix: enforce
Helper.ToSbyteinput range by @Wi1l-B0t in #2241 - Fix:
ByteString.EndsWithshould be failed if byteString is null by @Wi1l-B0t in #2239 - Optimize string.StartsWith for constant prefixes by @ajara87 in #2244
- Less opcodes and GAS for
ParseHexby @Wi1l-B0t in #2242 - Optimize LINQ Count for arrays using Length by @ajara87 in #2243
- Doc: add more accurate description to the
Opcodeby @Wi1l-B0t in #2231 - Add some ByteString extensions by @Wi1l-B0t in #2245
- Fix:
Helper.Reversereturnsbyte[]for all types ofArrayby @Wi1l-B0t in #2246 - Optimize string.IndexOf for constant empty strings by @ajara87 in #2247
- chore: Update Neo dependency to 3.10.2 by @ajara87 in #2238
New Contributors
- @dependabot[bot] made their first contribution in #2069
Full Changelog: v3.10.1...v3.10.2