forked from MihaZupan/runtime-utils
-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
Job completed in 18 minutes 53 seconds (remote runner delay: 1 minute 28 seconds).
dotnet/runtime#124736
Using arguments: regexdiff
Main commit: dotnet/runtime@ca778ae
PR commit: danmoseley/runtime@21a68d7
733 out of 18857 patterns have generated source code changes.
Examples of GeneratedRegex source diffs
"\\b(in)\\b" (658 uses)
[GeneratedRegex("\\b(in)\\b", RegexOptions.IgnoreCase | RegexOptions.Singleline)] // Any possible match is at least 2 characters.
if (pos <= inputSpan.Length - 2)
{
- // The pattern matches a character in the set [Nn] at index 1.
- // Find the next occurrence. If it can't be found, there's no match.
- ReadOnlySpan<char> span = inputSpan.Slice(pos);
- for (int i = 0; i < span.Length - 1; i++)
+ // The pattern has multiple strings that could begin the match. Search for any of them.
+ // If none can be found, there's no match.
+ int i = inputSpan.Slice(pos).IndexOfAny(Utilities.s_indexOfAnyStrings_Ordinal_409072BF36F03A4496ACC585815833300ABA306360D979616ACDCED385DDC8FB);
+ if (i >= 0)
{
- int indexOfPos = span.Slice(i + 1).IndexOfAny('N', 'n');
- if (indexOfPos < 0)
- {
- goto NoMatchFound;
- }
- i += indexOfPos;
-
- if (((span[i] | 0x20) == 'i'))
- {
- base.runtextpos = pos + i;
- return true;
- }
+ base.runtextpos = pos + i;
+ return true;
}
}
// No match found.
- NoMatchFound:
base.runtextpos = inputSpan.Length;
return false;
}
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03,
0xFE, 0xFF, 0xFF, 0x87, 0xFE, 0xFF, 0xFF, 0x07
};
+
+ /// <summary>Supports searching for the specified strings.</summary>
+ internal static readonly SearchValues<string> s_indexOfAnyStrings_Ordinal_409072BF36F03A4496ACC585815833300ABA306360D979616ACDCED385DDC8FB = SearchValues.Create(["IN", "iN", "In", "in"], StringComparison.Ordinal);
}
}"([uú]ltim[oa])\\b" (548 uses)
[GeneratedRegex("([uú]ltim[oa])\\b", RegexOptions.IgnoreCase | RegexOptions.Singleline)] private bool TryFindNextPossibleStartingPosition(ReadOnlySpan<char> inputSpan)
{
int pos = base.runtextpos;
- char ch;
// Any possible match is at least 6 characters.
if (pos <= inputSpan.Length - 6)
{
- // The pattern matches a character in the set [Mm] at index 4.
- // Find the next occurrence. If it can't be found, there's no match.
- ReadOnlySpan<char> span = inputSpan.Slice(pos);
- for (int i = 0; i < span.Length - 5; i++)
+ // The pattern has multiple strings that could begin the match. Search for any of them.
+ // If none can be found, there's no match.
+ int i = inputSpan.Slice(pos).IndexOfAny(Utilities.s_indexOfAnyStrings_Ordinal_5F1D4359E5DF98DCF4B95FDCBFEF2A013E0C46941AEBD0349C6180A4A0372176);
+ if (i >= 0)
{
- int indexOfPos = span.Slice(i + 4).IndexOfAny('M', 'm');
- if (indexOfPos < 0)
- {
- goto NoMatchFound;
- }
- i += indexOfPos;
-
- if (((ch = span[i]) < 128 ? ("\0\0\0\0\0 \0 "[ch >> 4] & (1 << (ch & 0xF))) != 0 : RegexRunner.CharInClass((char)ch, "\0\b\0UVuvÚÛúû")) &&
- ((span[i + 1] | 0x20) == 'l'))
- {
- base.runtextpos = pos + i;
- return true;
- }
+ base.runtextpos = pos + i;
+ return true;
}
}
// No match found.
- NoMatchFound:
base.runtextpos = inputSpan.Length;
return false;
}
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03,
0xFE, 0xFF, 0xFF, 0x87, 0xFE, 0xFF, 0xFF, 0x07
};
+
+ /// <summary>Supports searching for the specified strings.</summary>
+ internal static readonly SearchValues<string> s_indexOfAnyStrings_Ordinal_5F1D4359E5DF98DCF4B95FDCBFEF2A013E0C46941AEBD0349C6180A4A0372176 = SearchValues.Create(["ULT", "uLT", "ÚLT", "úLT", "UlT", "ulT", "ÚlT", "úlT", "ULt", "uLt", "ÚLt", "úLt", "Ult", "ult", "Últ", "últ"], StringComparison.Ordinal);
}
}"^refs\\/heads\\/tags\\/(.*)|refs\\/heads\\/( ..." (391 uses)
[GeneratedRegex("^refs\\/heads\\/tags\\/(.*)|refs\\/heads\\/(.*)|refs\\/tags\\/(.*)|refs\\/(.*)|origin\\/tags\\/(.*)|origin\\/(.*)$")] private bool TryFindNextPossibleStartingPosition(ReadOnlySpan<char> inputSpan)
{
int pos = base.runtextpos;
- char ch;
// Any possible match is at least 5 characters.
if (pos <= inputSpan.Length - 5)
{
- // The pattern matches a character in the set [/i] at index 4.
- // Find the next occurrence. If it can't be found, there's no match.
- ReadOnlySpan<char> span = inputSpan.Slice(pos);
- for (int i = 0; i < span.Length - 4; i++)
+ // The pattern has multiple strings that could begin the match. Search for any of them.
+ // If none can be found, there's no match.
+ int i = inputSpan.Slice(pos).IndexOfAny(Utilities.s_indexOfAnyStrings_Ordinal_30C2953D90C322A099E43E6AF5B7857C062C1C20BFC2B2BFB4A15149DFB3AFEF);
+ if (i >= 0)
{
- int indexOfPos = span.Slice(i + 4).IndexOfAny('/', 'i');
- if (indexOfPos < 0)
- {
- goto NoMatchFound;
- }
- i += indexOfPos;
-
- if ((((ch = span[i + 3]) == 'g') | (ch == 's')) &&
- (((ch = span[i + 2]) == 'f') | (ch == 'i')))
- {
- base.runtextpos = pos + i;
- return true;
- }
+ base.runtextpos = pos + i;
+ return true;
}
}
// No match found.
- NoMatchFound:
base.runtextpos = inputSpan.Length;
return false;
}
/// <summary>Whether <see cref="s_defaultTimeout"/> is non-infinite.</summary>
internal static readonly bool s_hasTimeout = s_defaultTimeout != Regex.InfiniteMatchTimeout;
+
+ /// <summary>Supports searching for the specified strings.</summary>
+ internal static readonly SearchValues<string> s_indexOfAnyStrings_Ordinal_30C2953D90C322A099E43E6AF5B7857C062C1C20BFC2B2BFB4A15149DFB3AFEF = SearchValues.Create(["refs/heads/tags/", "refs/heads/", "refs/tags/", "refs/", "origin/tags/", "origin/"], StringComparison.Ordinal);
}
}"\\b(from).+(to)\\b.+" (316 uses)
[GeneratedRegex("\\b(from).+(to)\\b.+", RegexOptions.IgnoreCase | RegexOptions.Singleline)] // Any possible match is at least 8 characters.
if (pos <= inputSpan.Length - 8)
{
- // The pattern matches a character in the set [Mm] at index 3.
- // Find the next occurrence. If it can't be found, there's no match.
- ReadOnlySpan<char> span = inputSpan.Slice(pos);
- for (int i = 0; i < span.Length - 7; i++)
+ // The pattern has multiple strings that could begin the match. Search for any of them.
+ // If none can be found, there's no match.
+ int i = inputSpan.Slice(pos).IndexOfAny(Utilities.s_indexOfAnyStrings_Ordinal_DA0DF7757216159252C4FA00AB5982AAA4403D2C43304873401C53E36F92CA04);
+ if (i >= 0)
{
- int indexOfPos = span.Slice(i + 3).IndexOfAny('M', 'm');
- if (indexOfPos < 0)
- {
- goto NoMatchFound;
- }
- i += indexOfPos;
-
- if (((span[i] | 0x20) == 'f') &&
- ((span[i + 2] | 0x20) == 'o'))
- {
- base.runtextpos = pos + i;
- return true;
- }
+ base.runtextpos = pos + i;
+ return true;
}
}
// No match found.
- NoMatchFound:
base.runtextpos = inputSpan.Length;
return false;
}
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03,
0xFE, 0xFF, 0xFF, 0x87, 0xFE, 0xFF, 0xFF, 0x07
};
+
+ /// <summary>Supports searching for the specified strings.</summary>
+ internal static readonly SearchValues<string> s_indexOfAnyStrings_Ordinal_DA0DF7757216159252C4FA00AB5982AAA4403D2C43304873401C53E36F92CA04 = SearchValues.Create(["FROM", "fROM", "FrOM", "frOM", "FRoM", "fRoM", "FroM", "froM", "FROm", "fROm", "FrOm", "frOm", "FRom", "fRom", "From", "from"], StringComparison.Ordinal);
}
}"\\b(?<year>((1[5-9]|20)\\d{2})|2100)\\b" (309 uses)
[GeneratedRegex("\\b(?<year>((1[5-9]|20)\\d{2})|2100)\\b", RegexOptions.IgnoreCase | RegexOptions.Singleline)] private bool TryFindNextPossibleStartingPosition(ReadOnlySpan<char> inputSpan)
{
int pos = base.runtextpos;
- char ch;
- uint charMinusLowUInt32;
// Any possible match is at least 4 characters.
if (pos <= inputSpan.Length - 4)
{
- // The pattern begins with a character in the set [12].
- // Find the next occurrence. If it can't be found, there's no match.
- ReadOnlySpan<char> span = inputSpan.Slice(pos);
- for (int i = 0; i < span.Length - 3; i++)
+ // The pattern has multiple strings that could begin the match. Search for any of them.
+ // If none can be found, there's no match.
+ int i = inputSpan.Slice(pos).IndexOfAny(Utilities.s_indexOfAnyStrings_Ordinal_74309B1520D1FC139D75B2BB6987007481E9B777F41E19A028B21AB7FC28BA45);
+ if (i >= 0)
{
- int indexOfPos = span.Slice(i).IndexOfAny('1', '2');
- if (indexOfPos < 0)
- {
- goto NoMatchFound;
- }
- i += indexOfPos;
-
- // The primary set being searched for was found. 2 more sets will be checked so as
- // to minimize the number of places TryMatchAtCurrentPosition is run unnecessarily.
- // Make sure they fit in the remainder of the input.
- if ((uint)(i + 2) >= (uint)span.Length)
- {
- goto NoMatchFound;
- }
-
- if (((int)((0xC7C00000U << (short)(charMinusLowUInt32 = (ushort)(span[i + 1] - '0'))) & (charMinusLowUInt32 - 32)) < 0) &&
- ((ch = span[i + 2]) < 128 ? char.IsAsciiDigit(ch) : RegexRunner.CharInClass((char)ch, "\0\u0002\u000101\t")))
- {
- base.runtextpos = pos + i;
- return true;
- }
+ base.runtextpos = pos + i;
+ return true;
}
}
// No match found.
- NoMatchFound:
base.runtextpos = inputSpan.Length;
return false;
}
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03,
0xFE, 0xFF, 0xFF, 0x87, 0xFE, 0xFF, 0xFF, 0x07
};
+
+ /// <summary>Supports searching for the specified strings.</summary>
+ internal static readonly SearchValues<string> s_indexOfAnyStrings_Ordinal_74309B1520D1FC139D75B2BB6987007481E9B777F41E19A028B21AB7FC28BA45 = SearchValues.Create(["15", "16", "17", "18", "19", "20", "2100"], StringComparison.Ordinal);
}
}"\\b(et\\s*(le|la(s)?)?)\\b.+" (291 uses)
[GeneratedRegex("\\b(et\\s*(le|la(s)?)?)\\b.+", RegexOptions.IgnoreCase | RegexOptions.Singleline)] // Any possible match is at least 3 characters.
if (pos <= inputSpan.Length - 3)
{
- // The pattern matches a character in the set [Tt] at index 1.
- // Find the next occurrence. If it can't be found, there's no match.
- ReadOnlySpan<char> span = inputSpan.Slice(pos);
- for (int i = 0; i < span.Length - 2; i++)
+ // The pattern has multiple strings that could begin the match. Search for any of them.
+ // If none can be found, there's no match.
+ int i = inputSpan.Slice(pos).IndexOfAny(Utilities.s_indexOfAnyStrings_Ordinal_40190A5AE82B92C9577FE9A45CD09B22413116F9859390E6536F6EF2E5085EA1);
+ if (i >= 0)
{
- int indexOfPos = span.Slice(i + 1).IndexOfAny('T', 't');
- if (indexOfPos < 0)
- {
- goto NoMatchFound;
- }
- i += indexOfPos;
-
- if (((span[i] | 0x20) == 'e'))
- {
- base.runtextpos = pos + i;
- return true;
- }
+ base.runtextpos = pos + i;
+ return true;
}
}
// No match found.
- NoMatchFound:
base.runtextpos = inputSpan.Length;
return false;
}
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03,
0xFE, 0xFF, 0xFF, 0x87, 0xFE, 0xFF, 0xFF, 0x07
};
+
+ /// <summary>Supports searching for the specified strings.</summary>
+ internal static readonly SearchValues<string> s_indexOfAnyStrings_Ordinal_40190A5AE82B92C9577FE9A45CD09B22413116F9859390E6536F6EF2E5085EA1 = SearchValues.Create(["ET", "eT", "Et", "et"], StringComparison.Ordinal);
}
}"\\b(https?://|ftp://|www\\.)[\\w\\d\\._/\\-~ ..." (267 uses)
[GeneratedRegex("\\b(https?://|ftp://|www\\.)[\\w\\d\\._/\\-~%@()+:?&=#!]*[\\w\\d/]")] private bool TryFindNextPossibleStartingPosition(ReadOnlySpan<char> inputSpan)
{
int pos = base.runtextpos;
- char ch;
// Any possible match is at least 5 characters.
if (pos <= inputSpan.Length - 5)
{
- // The pattern begins with a character in the set [fhw].
- // Find the next occurrence. If it can't be found, there's no match.
- ReadOnlySpan<char> span = inputSpan.Slice(pos);
- for (int i = 0; i < span.Length - 4; i++)
+ // The pattern has multiple strings that could begin the match. Search for any of them.
+ // If none can be found, there's no match.
+ int i = inputSpan.Slice(pos).IndexOfAny(Utilities.s_indexOfAnyStrings_Ordinal_7E253910419F77A121C9FCE57096BB0770898849401D67ABDAF3E17D2F5F21FD);
+ if (i >= 0)
{
- int indexOfPos = span.Slice(i).IndexOfAny('f', 'h', 'w');
- if (indexOfPos < 0)
- {
- goto NoMatchFound;
- }
- i += indexOfPos;
-
- // The primary set being searched for was found. 2 more sets will be checked so as
- // to minimize the number of places TryMatchAtCurrentPosition is run unnecessarily.
- // Make sure they fit in the remainder of the input.
- if ((uint)(i + 3) >= (uint)span.Length)
- {
- goto NoMatchFound;
- }
-
- if ((((ch = span[i + 3]) == '.') | (ch == ':') | (ch == 'p')) &&
- (((ch = span[i + 1]) == 't') | (ch == 'w')))
- {
- base.runtextpos = pos + i;
- return true;
- }
+ base.runtextpos = pos + i;
+ return true;
}
}
// No match found.
- NoMatchFound:
base.runtextpos = inputSpan.Length;
return false;
}
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03,
0xFE, 0xFF, 0xFF, 0x87, 0xFE, 0xFF, 0xFF, 0x07
};
+
+ /// <summary>Supports searching for the specified strings.</summary>
+ internal static readonly SearchValues<string> s_indexOfAnyStrings_Ordinal_7E253910419F77A121C9FCE57096BB0770898849401D67ABDAF3E17D2F5F21FD = SearchValues.Create(["http", "ftp://", "www."], StringComparison.Ordinal);
}
}"\\b(?<unit>decennio?|ann[oi]|mes[ei]|settima ..." (255 uses)
[GeneratedRegex("\\b(?<unit>decennio?|ann[oi]|mes[ei]|settiman[ae]|giorn[oi])\\b", RegexOptions.ExplicitCapture | RegexOptions.Singleline)] private bool TryFindNextPossibleStartingPosition(ReadOnlySpan<char> inputSpan)
{
int pos = base.runtextpos;
- char ch;
- uint charMinusLowUInt32;
// Any possible match is at least 4 characters.
if (pos <= inputSpan.Length - 4)
{
- // The pattern begins with a character in the set [adgms].
- // Find the next occurrence. If it can't be found, there's no match.
- ReadOnlySpan<char> span = inputSpan.Slice(pos);
- for (int i = 0; i < span.Length - 3; i++)
+ // The pattern has multiple strings that could begin the match. Search for any of them.
+ // If none can be found, there's no match.
+ int i = inputSpan.Slice(pos).IndexOfAny(Utilities.s_indexOfAnyStrings_Ordinal_7F16DACEF575A8087BAF8FAC14BC47F4D2214D513F67C3250A958A2D52D6440A);
+ if (i >= 0)
{
- int indexOfPos = span.Slice(i).IndexOfAny(Utilities.s_ascii_92200800);
- if (indexOfPos < 0)
- {
- goto NoMatchFound;
- }
- i += indexOfPos;
-
- // The primary set being searched for was found. 2 more sets will be checked so as
- // to minimize the number of places TryMatchAtCurrentPosition is run unnecessarily.
- // Make sure they fit in the remainder of the input.
- if ((uint)(i + 2) >= (uint)span.Length)
- {
- goto NoMatchFound;
- }
-
- if ((((ch = span[i + 1]) == 'e') | (ch == 'i') | (ch == 'n')) &&
- ((int)((0x8018C000U << (short)(charMinusLowUInt32 = (ushort)(span[i + 2] - 'c'))) & (charMinusLowUInt32 - 32)) < 0))
- {
- base.runtextpos = pos + i;
- return true;
- }
+ base.runtextpos = pos + i;
+ return true;
}
}
// No match found.
- NoMatchFound:
base.runtextpos = inputSpan.Length;
return false;
}
0xFE, 0xFF, 0xFF, 0x87, 0xFE, 0xFF, 0xFF, 0x07
};
- /// <summary>Supports searching for characters in or not in "adgms".</summary>
- internal static readonly SearchValues<char> s_ascii_92200800 = SearchValues.Create("adgms");
+ /// <summary>Supports searching for the specified strings.</summary>
+ internal static readonly SearchValues<string> s_indexOfAnyStrings_Ordinal_7F16DACEF575A8087BAF8FAC14BC47F4D2214D513F67C3250A958A2D52D6440A = SearchValues.Create(["decenni", "anni", "anno", "mese", "mesi", "settiman", "giorni", "giorno"], StringComparison.Ordinal);
}
}"(quest['oa]|corrente)" (244 uses)
[GeneratedRegex("(quest['oa]|corrente)", RegexOptions.ExplicitCapture | RegexOptions.Singleline)] private bool TryFindNextPossibleStartingPosition(ReadOnlySpan<char> inputSpan)
{
int pos = base.runtextpos;
- char ch;
// Any possible match is at least 6 characters.
if (pos <= inputSpan.Length - 6)
{
- // The pattern begins with a character in the set [cq].
- // Find the next occurrence. If it can't be found, there's no match.
- ReadOnlySpan<char> span = inputSpan.Slice(pos);
- for (int i = 0; i < span.Length - 5; i++)
+ // The pattern has multiple strings that could begin the match. Search for any of them.
+ // If none can be found, there's no match.
+ int i = inputSpan.Slice(pos).IndexOfAny(Utilities.s_indexOfAnyStrings_Ordinal_763B6F2775AD886009FE306897080DA0D914A7D65E7AECC2B25D4344D9F8EF63);
+ if (i >= 0)
{
- int indexOfPos = span.Slice(i).IndexOfAny('c', 'q');
- if (indexOfPos < 0)
- {
- goto NoMatchFound;
- }
- i += indexOfPos;
-
- // The primary set being searched for was found. 2 more sets will be checked so as
- // to minimize the number of places TryMatchAtCurrentPosition is run unnecessarily.
- // Make sure they fit in the remainder of the input.
- if ((uint)(i + 3) >= (uint)span.Length)
- {
- goto NoMatchFound;
- }
-
- if ((((ch = span[i + 1]) == 'o') | (ch == 'u')) &&
- char.IsBetween(span[i + 3], 'r', 's'))
- {
- base.runtextpos = pos + i;
- return true;
- }
+ base.runtextpos = pos + i;
+ return true;
}
}
// No match found.
- NoMatchFound:
base.runtextpos = inputSpan.Length;
return false;
}
/// <summary>Whether <see cref="s_defaultTimeout"/> is non-infinite.</summary>
internal static readonly bool s_hasTimeout = s_defaultTimeout != Regex.InfiniteMatchTimeout;
+
+ /// <summary>Supports searching for the specified strings.</summary>
+ internal static readonly SearchValues<string> s_indexOfAnyStrings_Ordinal_763B6F2775AD886009FE306897080DA0D914A7D65E7AECC2B25D4344D9F8EF63 = SearchValues.Create(["quest'", "questa", "questo", "corrente"], StringComparison.Ordinal);
}
}"\\b(da(l(l[oae'])?|i|gli)?|tra|fra|entro)(\\ ..." (228 uses)
[GeneratedRegex("\\b(da(l(l[oae'])?|i|gli)?|tra|fra|entro)(\\s+(il|l[aeo']|gli|i))?\\b", RegexOptions.ExplicitCapture | RegexOptions.Singleline)] private bool TryFindNextPossibleStartingPosition(ReadOnlySpan<char> inputSpan)
{
int pos = base.runtextpos;
- uint charMinusLowUInt32;
// Any possible match is at least 2 characters.
if (pos <= inputSpan.Length - 2)
{
- // The pattern matches a character in the set [anr] at index 1.
- // Find the next occurrence. If it can't be found, there's no match.
- ReadOnlySpan<char> span = inputSpan.Slice(pos);
- for (int i = 0; i < span.Length - 1; i++)
+ // The pattern has multiple strings that could begin the match. Search for any of them.
+ // If none can be found, there's no match.
+ int i = inputSpan.Slice(pos).IndexOfAny(Utilities.s_indexOfAnyStrings_Ordinal_99936EDA919D5A1A2F2418047924F8D2D31078642E1958EC7E8A32CF569E2511);
+ if (i >= 0)
{
- int indexOfPos = span.Slice(i + 1).IndexOfAny('a', 'n', 'r');
- if (indexOfPos < 0)
- {
- goto NoMatchFound;
- }
- i += indexOfPos;
-
- if (((int)((0xE0008000U << (short)(charMinusLowUInt32 = (ushort)(span[i] - 'd'))) & (charMinusLowUInt32 - 32)) < 0))
- {
- base.runtextpos = pos + i;
- return true;
- }
+ base.runtextpos = pos + i;
+ return true;
}
}
// No match found.
- NoMatchFound:
base.runtextpos = inputSpan.Length;
return false;
}
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03,
0xFE, 0xFF, 0xFF, 0x87, 0xFE, 0xFF, 0xFF, 0x07
};
+
+ /// <summary>Supports searching for the specified strings.</summary>
+ internal static readonly SearchValues<string> s_indexOfAnyStrings_Ordinal_99936EDA919D5A1A2F2418047924F8D2D31078642E1958EC7E8A32CF569E2511 = SearchValues.Create(["da", "tra", "fra", "entro"], StringComparison.Ordinal);
}
}For more diff examples, see https://gist.github.com/MihuBot/e53dc1d081be99a109ec2d2700619645
JIT assembly changes
Total bytes of base: 54227147
Total bytes of diff: 54284087
Total bytes of delta: 56940 (0.11 % of base)
Total relative delta: 972.36
diff is a regression.
relative diff is a regression.
For a list of JIT diff regressions, see Regressions.md
For a list of JIT diff improvements, see Improvements.md
Sample source code for further analysis
const string JsonPath = "RegexResults-1788.json";
if (!File.Exists(JsonPath))
{
await using var archiveStream = await new HttpClient().GetStreamAsync("https://mihubot.xyz/r/FHqnss4");
using var archive = new ZipArchive(archiveStream, ZipArchiveMode.Read);
archive.Entries.First(e => e.Name == "Results.json").ExtractToFile(JsonPath);
}
using FileStream jsonFileStream = File.OpenRead(JsonPath);
RegexEntry[] entries = JsonSerializer.Deserialize<RegexEntry[]>(jsonFileStream, new JsonSerializerOptions { IncludeFields = true })!;
Console.WriteLine($"Working with {entries.Length} patterns");
record KnownPattern(string Pattern, RegexOptions Options, int Count);
sealed class RegexEntry
{
public required KnownPattern Regex { get; set; }
public required string MainSource { get; set; }
public required string PrSource { get; set; }
public string? FullDiff { get; set; }
public string? ShortDiff { get; set; }
public (string Name, string Values)[]? SearchValuesOfChar { get; set; }
public (string[] Values, StringComparison ComparisonType)[]? SearchValuesOfString { get; set; }
}Artifacts:
- ShortExampleDiffs.md (29 KB)
- LongExampleDiffs.md (899 KB)
- Results.zip (44 MB)
- jit-diffs.zip (391 MB)
- JitAnalyzeSummary.txt (60 KB)
- JitDiffRegressions.md (895 KB)
- LongJitDiffRegressions.md (9 MB)
- JitDiffImprovements.md (890 KB)
- LongJitDiffImprovements.md (10 MB)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels