Skip to content

Commit 59ea7c4

Browse files
perf: HtmlCharRefs entity lookup uses Dictionary for O(1) instead of Map O(log n)
Replace the F# Map<string, string> (O(log n) per lookup) with a Dictionary<string, string> (O(1) per lookup) for the ~2230 HTML named-entity table. Also introduce a static semiColonChars array to avoid allocating a new char[] on every call to TrimEnd inside the (|Number|Lookup|) active pattern. Bump version to 8.1.10. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent b40f167 commit 59ea7c4

11 files changed

Lines changed: 59 additions & 40 deletions

RELEASE_NOTES.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Release Notes
22

3+
## 8.1.10 - Apr 20 2026
4+
5+
- Performance: `HtmlCharRefs` entity lookup now uses a `Dictionary<string, string>` instead of an F# `Map`, giving O(1) lookups instead of O(log n) for ~2230 HTML named-entity entries. Also avoids a repeated `char[]` allocation in the `TrimEnd` call inside the active pattern.
6+
37
## 8.1.9 - Apr 18 2026
48

59
- Fix: `Caching.hashString` now disposes the `SHA1` instance after use; on .NET 5+ uses `SHA1.HashData` (static, pool-backed) to avoid allocation entirely (PR #1745)

src/AssemblyInfo.Csv.Core.fs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ open System.Reflection
55
[<assembly: AssemblyTitleAttribute("FSharp.Data.Csv.Core")>]
66
[<assembly: AssemblyProductAttribute("FSharp.Data")>]
77
[<assembly: AssemblyDescriptionAttribute("Library of F# type providers and data access tools")>]
8-
[<assembly: AssemblyVersionAttribute("8.1.9.0")>]
9-
[<assembly: AssemblyFileVersionAttribute("8.1.9.0")>]
8+
[<assembly: AssemblyVersionAttribute("8.1.10.0")>]
9+
[<assembly: AssemblyFileVersionAttribute("8.1.10.0")>]
1010
do ()
1111

1212
module internal AssemblyVersionInformation =
1313
let [<Literal>] AssemblyTitle = "FSharp.Data.Csv.Core"
1414
let [<Literal>] AssemblyProduct = "FSharp.Data"
1515
let [<Literal>] AssemblyDescription = "Library of F# type providers and data access tools"
16-
let [<Literal>] AssemblyVersion = "8.1.9.0"
17-
let [<Literal>] AssemblyFileVersion = "8.1.9.0"
16+
let [<Literal>] AssemblyVersion = "8.1.10.0"
17+
let [<Literal>] AssemblyFileVersion = "8.1.10.0"

src/AssemblyInfo.DesignTime.fs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ open System.Reflection
55
[<assembly: AssemblyTitleAttribute("FSharp.Data.DesignTime")>]
66
[<assembly: AssemblyProductAttribute("FSharp.Data")>]
77
[<assembly: AssemblyDescriptionAttribute("Library of F# type providers and data access tools")>]
8-
[<assembly: AssemblyVersionAttribute("8.1.9.0")>]
9-
[<assembly: AssemblyFileVersionAttribute("8.1.9.0")>]
8+
[<assembly: AssemblyVersionAttribute("8.1.10.0")>]
9+
[<assembly: AssemblyFileVersionAttribute("8.1.10.0")>]
1010
do ()
1111

1212
module internal AssemblyVersionInformation =
1313
let [<Literal>] AssemblyTitle = "FSharp.Data.DesignTime"
1414
let [<Literal>] AssemblyProduct = "FSharp.Data"
1515
let [<Literal>] AssemblyDescription = "Library of F# type providers and data access tools"
16-
let [<Literal>] AssemblyVersion = "8.1.9.0"
17-
let [<Literal>] AssemblyFileVersion = "8.1.9.0"
16+
let [<Literal>] AssemblyVersion = "8.1.10.0"
17+
let [<Literal>] AssemblyFileVersion = "8.1.10.0"

src/AssemblyInfo.Html.Core.fs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ open System.Reflection
55
[<assembly: AssemblyTitleAttribute("FSharp.Data.Html.Core")>]
66
[<assembly: AssemblyProductAttribute("FSharp.Data")>]
77
[<assembly: AssemblyDescriptionAttribute("Library of F# type providers and data access tools")>]
8-
[<assembly: AssemblyVersionAttribute("8.1.9.0")>]
9-
[<assembly: AssemblyFileVersionAttribute("8.1.9.0")>]
8+
[<assembly: AssemblyVersionAttribute("8.1.10.0")>]
9+
[<assembly: AssemblyFileVersionAttribute("8.1.10.0")>]
1010
do ()
1111

1212
module internal AssemblyVersionInformation =
1313
let [<Literal>] AssemblyTitle = "FSharp.Data.Html.Core"
1414
let [<Literal>] AssemblyProduct = "FSharp.Data"
1515
let [<Literal>] AssemblyDescription = "Library of F# type providers and data access tools"
16-
let [<Literal>] AssemblyVersion = "8.1.9.0"
17-
let [<Literal>] AssemblyFileVersion = "8.1.9.0"
16+
let [<Literal>] AssemblyVersion = "8.1.10.0"
17+
let [<Literal>] AssemblyFileVersion = "8.1.10.0"

src/AssemblyInfo.Http.fs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ open System.Reflection
55
[<assembly: AssemblyTitleAttribute("FSharp.Data.Http")>]
66
[<assembly: AssemblyProductAttribute("FSharp.Data")>]
77
[<assembly: AssemblyDescriptionAttribute("Library of F# type providers and data access tools")>]
8-
[<assembly: AssemblyVersionAttribute("8.1.9.0")>]
9-
[<assembly: AssemblyFileVersionAttribute("8.1.9.0")>]
8+
[<assembly: AssemblyVersionAttribute("8.1.10.0")>]
9+
[<assembly: AssemblyFileVersionAttribute("8.1.10.0")>]
1010
do ()
1111

1212
module internal AssemblyVersionInformation =
1313
let [<Literal>] AssemblyTitle = "FSharp.Data.Http"
1414
let [<Literal>] AssemblyProduct = "FSharp.Data"
1515
let [<Literal>] AssemblyDescription = "Library of F# type providers and data access tools"
16-
let [<Literal>] AssemblyVersion = "8.1.9.0"
17-
let [<Literal>] AssemblyFileVersion = "8.1.9.0"
16+
let [<Literal>] AssemblyVersion = "8.1.10.0"
17+
let [<Literal>] AssemblyFileVersion = "8.1.10.0"

src/AssemblyInfo.Json.Core.fs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ open System.Reflection
55
[<assembly: AssemblyTitleAttribute("FSharp.Data.Json.Core")>]
66
[<assembly: AssemblyProductAttribute("FSharp.Data")>]
77
[<assembly: AssemblyDescriptionAttribute("Library of F# type providers and data access tools")>]
8-
[<assembly: AssemblyVersionAttribute("8.1.9.0")>]
9-
[<assembly: AssemblyFileVersionAttribute("8.1.9.0")>]
8+
[<assembly: AssemblyVersionAttribute("8.1.10.0")>]
9+
[<assembly: AssemblyFileVersionAttribute("8.1.10.0")>]
1010
do ()
1111

1212
module internal AssemblyVersionInformation =
1313
let [<Literal>] AssemblyTitle = "FSharp.Data.Json.Core"
1414
let [<Literal>] AssemblyProduct = "FSharp.Data"
1515
let [<Literal>] AssemblyDescription = "Library of F# type providers and data access tools"
16-
let [<Literal>] AssemblyVersion = "8.1.9.0"
17-
let [<Literal>] AssemblyFileVersion = "8.1.9.0"
16+
let [<Literal>] AssemblyVersion = "8.1.10.0"
17+
let [<Literal>] AssemblyFileVersion = "8.1.10.0"

src/AssemblyInfo.Runtime.Utilities.fs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ open System.Reflection
55
[<assembly: AssemblyTitleAttribute("FSharp.Data.Runtime.Utilities")>]
66
[<assembly: AssemblyProductAttribute("FSharp.Data")>]
77
[<assembly: AssemblyDescriptionAttribute("Library of F# type providers and data access tools")>]
8-
[<assembly: AssemblyVersionAttribute("8.1.9.0")>]
9-
[<assembly: AssemblyFileVersionAttribute("8.1.9.0")>]
8+
[<assembly: AssemblyVersionAttribute("8.1.10.0")>]
9+
[<assembly: AssemblyFileVersionAttribute("8.1.10.0")>]
1010
do ()
1111

1212
module internal AssemblyVersionInformation =
1313
let [<Literal>] AssemblyTitle = "FSharp.Data.Runtime.Utilities"
1414
let [<Literal>] AssemblyProduct = "FSharp.Data"
1515
let [<Literal>] AssemblyDescription = "Library of F# type providers and data access tools"
16-
let [<Literal>] AssemblyVersion = "8.1.9.0"
17-
let [<Literal>] AssemblyFileVersion = "8.1.9.0"
16+
let [<Literal>] AssemblyVersion = "8.1.10.0"
17+
let [<Literal>] AssemblyFileVersion = "8.1.10.0"

src/AssemblyInfo.WorldBank.Core.fs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ open System.Reflection
55
[<assembly: AssemblyTitleAttribute("FSharp.Data.WorldBank.Core")>]
66
[<assembly: AssemblyProductAttribute("FSharp.Data")>]
77
[<assembly: AssemblyDescriptionAttribute("Library of F# type providers and data access tools")>]
8-
[<assembly: AssemblyVersionAttribute("8.1.9.0")>]
9-
[<assembly: AssemblyFileVersionAttribute("8.1.9.0")>]
8+
[<assembly: AssemblyVersionAttribute("8.1.10.0")>]
9+
[<assembly: AssemblyFileVersionAttribute("8.1.10.0")>]
1010
do ()
1111

1212
module internal AssemblyVersionInformation =
1313
let [<Literal>] AssemblyTitle = "FSharp.Data.WorldBank.Core"
1414
let [<Literal>] AssemblyProduct = "FSharp.Data"
1515
let [<Literal>] AssemblyDescription = "Library of F# type providers and data access tools"
16-
let [<Literal>] AssemblyVersion = "8.1.9.0"
17-
let [<Literal>] AssemblyFileVersion = "8.1.9.0"
16+
let [<Literal>] AssemblyVersion = "8.1.10.0"
17+
let [<Literal>] AssemblyFileVersion = "8.1.10.0"

src/AssemblyInfo.Xml.Core.fs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ open System.Reflection
55
[<assembly: AssemblyTitleAttribute("FSharp.Data.Xml.Core")>]
66
[<assembly: AssemblyProductAttribute("FSharp.Data")>]
77
[<assembly: AssemblyDescriptionAttribute("Library of F# type providers and data access tools")>]
8-
[<assembly: AssemblyVersionAttribute("8.1.9.0")>]
9-
[<assembly: AssemblyFileVersionAttribute("8.1.9.0")>]
8+
[<assembly: AssemblyVersionAttribute("8.1.10.0")>]
9+
[<assembly: AssemblyFileVersionAttribute("8.1.10.0")>]
1010
do ()
1111

1212
module internal AssemblyVersionInformation =
1313
let [<Literal>] AssemblyTitle = "FSharp.Data.Xml.Core"
1414
let [<Literal>] AssemblyProduct = "FSharp.Data"
1515
let [<Literal>] AssemblyDescription = "Library of F# type providers and data access tools"
16-
let [<Literal>] AssemblyVersion = "8.1.9.0"
17-
let [<Literal>] AssemblyFileVersion = "8.1.9.0"
16+
let [<Literal>] AssemblyVersion = "8.1.10.0"
17+
let [<Literal>] AssemblyFileVersion = "8.1.10.0"

src/AssemblyInfo.fs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ open System.Reflection
55
[<assembly: AssemblyTitleAttribute("FSharp.Data")>]
66
[<assembly: AssemblyProductAttribute("FSharp.Data")>]
77
[<assembly: AssemblyDescriptionAttribute("Library of F# type providers and data access tools")>]
8-
[<assembly: AssemblyVersionAttribute("8.1.9.0")>]
9-
[<assembly: AssemblyFileVersionAttribute("8.1.9.0")>]
8+
[<assembly: AssemblyVersionAttribute("8.1.10.0")>]
9+
[<assembly: AssemblyFileVersionAttribute("8.1.10.0")>]
1010
do ()
1111

1212
module internal AssemblyVersionInformation =
1313
let [<Literal>] AssemblyTitle = "FSharp.Data"
1414
let [<Literal>] AssemblyProduct = "FSharp.Data"
1515
let [<Literal>] AssemblyDescription = "Library of F# type providers and data access tools"
16-
let [<Literal>] AssemblyVersion = "8.1.9.0"
17-
let [<Literal>] AssemblyFileVersion = "8.1.9.0"
16+
let [<Literal>] AssemblyVersion = "8.1.10.0"
17+
let [<Literal>] AssemblyFileVersion = "8.1.10.0"

0 commit comments

Comments
 (0)