Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Release Notes

## 8.1.11 - Apr 22 2026

- Code: `HtmlParser` `EmitTag` removes dead code in the `else` branch (the expression `x.HasFormattedParent || x.IsFormattedTag` was always equivalent to `x.HasFormattedParent` since `x.IsFormattedTag` is always `false` in that branch). Uses `name` directly to avoid re-computing `CurrentTagName()` for formatted/script tag checks. Also removes redundant `.ToLowerInvariant()` calls in `IsFormattedTag` and `IsScriptTag` since tag names are already lowercased at read time.

## 8.1.10 - Apr 20 2026

- 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.
Expand Down
8 changes: 4 additions & 4 deletions src/AssemblyInfo.Csv.Core.fs
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@ open System.Reflection
[<assembly: AssemblyTitleAttribute("FSharp.Data.Csv.Core")>]
[<assembly: AssemblyProductAttribute("FSharp.Data")>]
[<assembly: AssemblyDescriptionAttribute("Library of F# type providers and data access tools")>]
[<assembly: AssemblyVersionAttribute("8.1.10.0")>]
[<assembly: AssemblyFileVersionAttribute("8.1.10.0")>]
[<assembly: AssemblyVersionAttribute("8.1.11.0")>]
[<assembly: AssemblyFileVersionAttribute("8.1.11.0")>]
do ()

module internal AssemblyVersionInformation =
let [<Literal>] AssemblyTitle = "FSharp.Data.Csv.Core"
let [<Literal>] AssemblyProduct = "FSharp.Data"
let [<Literal>] AssemblyDescription = "Library of F# type providers and data access tools"
let [<Literal>] AssemblyVersion = "8.1.10.0"
let [<Literal>] AssemblyFileVersion = "8.1.10.0"
let [<Literal>] AssemblyVersion = "8.1.11.0"
let [<Literal>] AssemblyFileVersion = "8.1.11.0"
8 changes: 4 additions & 4 deletions src/AssemblyInfo.DesignTime.fs
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@ open System.Reflection
[<assembly: AssemblyTitleAttribute("FSharp.Data.DesignTime")>]
[<assembly: AssemblyProductAttribute("FSharp.Data")>]
[<assembly: AssemblyDescriptionAttribute("Library of F# type providers and data access tools")>]
[<assembly: AssemblyVersionAttribute("8.1.10.0")>]
[<assembly: AssemblyFileVersionAttribute("8.1.10.0")>]
[<assembly: AssemblyVersionAttribute("8.1.11.0")>]
[<assembly: AssemblyFileVersionAttribute("8.1.11.0")>]
do ()

module internal AssemblyVersionInformation =
let [<Literal>] AssemblyTitle = "FSharp.Data.DesignTime"
let [<Literal>] AssemblyProduct = "FSharp.Data"
let [<Literal>] AssemblyDescription = "Library of F# type providers and data access tools"
let [<Literal>] AssemblyVersion = "8.1.10.0"
let [<Literal>] AssemblyFileVersion = "8.1.10.0"
let [<Literal>] AssemblyVersion = "8.1.11.0"
let [<Literal>] AssemblyFileVersion = "8.1.11.0"
8 changes: 4 additions & 4 deletions src/AssemblyInfo.Html.Core.fs
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@ open System.Reflection
[<assembly: AssemblyTitleAttribute("FSharp.Data.Html.Core")>]
[<assembly: AssemblyProductAttribute("FSharp.Data")>]
[<assembly: AssemblyDescriptionAttribute("Library of F# type providers and data access tools")>]
[<assembly: AssemblyVersionAttribute("8.1.10.0")>]
[<assembly: AssemblyFileVersionAttribute("8.1.10.0")>]
[<assembly: AssemblyVersionAttribute("8.1.11.0")>]
[<assembly: AssemblyFileVersionAttribute("8.1.11.0")>]
do ()

module internal AssemblyVersionInformation =
let [<Literal>] AssemblyTitle = "FSharp.Data.Html.Core"
let [<Literal>] AssemblyProduct = "FSharp.Data"
let [<Literal>] AssemblyDescription = "Library of F# type providers and data access tools"
let [<Literal>] AssemblyVersion = "8.1.10.0"
let [<Literal>] AssemblyFileVersion = "8.1.10.0"
let [<Literal>] AssemblyVersion = "8.1.11.0"
let [<Literal>] AssemblyFileVersion = "8.1.11.0"
8 changes: 4 additions & 4 deletions src/AssemblyInfo.Http.fs
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@ open System.Reflection
[<assembly: AssemblyTitleAttribute("FSharp.Data.Http")>]
[<assembly: AssemblyProductAttribute("FSharp.Data")>]
[<assembly: AssemblyDescriptionAttribute("Library of F# type providers and data access tools")>]
[<assembly: AssemblyVersionAttribute("8.1.10.0")>]
[<assembly: AssemblyFileVersionAttribute("8.1.10.0")>]
[<assembly: AssemblyVersionAttribute("8.1.11.0")>]
[<assembly: AssemblyFileVersionAttribute("8.1.11.0")>]
do ()

module internal AssemblyVersionInformation =
let [<Literal>] AssemblyTitle = "FSharp.Data.Http"
let [<Literal>] AssemblyProduct = "FSharp.Data"
let [<Literal>] AssemblyDescription = "Library of F# type providers and data access tools"
let [<Literal>] AssemblyVersion = "8.1.10.0"
let [<Literal>] AssemblyFileVersion = "8.1.10.0"
let [<Literal>] AssemblyVersion = "8.1.11.0"
let [<Literal>] AssemblyFileVersion = "8.1.11.0"
8 changes: 4 additions & 4 deletions src/AssemblyInfo.Json.Core.fs
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@ open System.Reflection
[<assembly: AssemblyTitleAttribute("FSharp.Data.Json.Core")>]
[<assembly: AssemblyProductAttribute("FSharp.Data")>]
[<assembly: AssemblyDescriptionAttribute("Library of F# type providers and data access tools")>]
[<assembly: AssemblyVersionAttribute("8.1.10.0")>]
[<assembly: AssemblyFileVersionAttribute("8.1.10.0")>]
[<assembly: AssemblyVersionAttribute("8.1.11.0")>]
[<assembly: AssemblyFileVersionAttribute("8.1.11.0")>]
do ()

module internal AssemblyVersionInformation =
let [<Literal>] AssemblyTitle = "FSharp.Data.Json.Core"
let [<Literal>] AssemblyProduct = "FSharp.Data"
let [<Literal>] AssemblyDescription = "Library of F# type providers and data access tools"
let [<Literal>] AssemblyVersion = "8.1.10.0"
let [<Literal>] AssemblyFileVersion = "8.1.10.0"
let [<Literal>] AssemblyVersion = "8.1.11.0"
let [<Literal>] AssemblyFileVersion = "8.1.11.0"
8 changes: 4 additions & 4 deletions src/AssemblyInfo.Runtime.Utilities.fs
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@ open System.Reflection
[<assembly: AssemblyTitleAttribute("FSharp.Data.Runtime.Utilities")>]
[<assembly: AssemblyProductAttribute("FSharp.Data")>]
[<assembly: AssemblyDescriptionAttribute("Library of F# type providers and data access tools")>]
[<assembly: AssemblyVersionAttribute("8.1.10.0")>]
[<assembly: AssemblyFileVersionAttribute("8.1.10.0")>]
[<assembly: AssemblyVersionAttribute("8.1.11.0")>]
[<assembly: AssemblyFileVersionAttribute("8.1.11.0")>]
do ()

module internal AssemblyVersionInformation =
let [<Literal>] AssemblyTitle = "FSharp.Data.Runtime.Utilities"
let [<Literal>] AssemblyProduct = "FSharp.Data"
let [<Literal>] AssemblyDescription = "Library of F# type providers and data access tools"
let [<Literal>] AssemblyVersion = "8.1.10.0"
let [<Literal>] AssemblyFileVersion = "8.1.10.0"
let [<Literal>] AssemblyVersion = "8.1.11.0"
let [<Literal>] AssemblyFileVersion = "8.1.11.0"
8 changes: 4 additions & 4 deletions src/AssemblyInfo.WorldBank.Core.fs
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@ open System.Reflection
[<assembly: AssemblyTitleAttribute("FSharp.Data.WorldBank.Core")>]
[<assembly: AssemblyProductAttribute("FSharp.Data")>]
[<assembly: AssemblyDescriptionAttribute("Library of F# type providers and data access tools")>]
[<assembly: AssemblyVersionAttribute("8.1.10.0")>]
[<assembly: AssemblyFileVersionAttribute("8.1.10.0")>]
[<assembly: AssemblyVersionAttribute("8.1.11.0")>]
[<assembly: AssemblyFileVersionAttribute("8.1.11.0")>]
do ()

module internal AssemblyVersionInformation =
let [<Literal>] AssemblyTitle = "FSharp.Data.WorldBank.Core"
let [<Literal>] AssemblyProduct = "FSharp.Data"
let [<Literal>] AssemblyDescription = "Library of F# type providers and data access tools"
let [<Literal>] AssemblyVersion = "8.1.10.0"
let [<Literal>] AssemblyFileVersion = "8.1.10.0"
let [<Literal>] AssemblyVersion = "8.1.11.0"
let [<Literal>] AssemblyFileVersion = "8.1.11.0"
8 changes: 4 additions & 4 deletions src/AssemblyInfo.Xml.Core.fs
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@ open System.Reflection
[<assembly: AssemblyTitleAttribute("FSharp.Data.Xml.Core")>]
[<assembly: AssemblyProductAttribute("FSharp.Data")>]
[<assembly: AssemblyDescriptionAttribute("Library of F# type providers and data access tools")>]
[<assembly: AssemblyVersionAttribute("8.1.10.0")>]
[<assembly: AssemblyFileVersionAttribute("8.1.10.0")>]
[<assembly: AssemblyVersionAttribute("8.1.11.0")>]
[<assembly: AssemblyFileVersionAttribute("8.1.11.0")>]
do ()

module internal AssemblyVersionInformation =
let [<Literal>] AssemblyTitle = "FSharp.Data.Xml.Core"
let [<Literal>] AssemblyProduct = "FSharp.Data"
let [<Literal>] AssemblyDescription = "Library of F# type providers and data access tools"
let [<Literal>] AssemblyVersion = "8.1.10.0"
let [<Literal>] AssemblyFileVersion = "8.1.10.0"
let [<Literal>] AssemblyVersion = "8.1.11.0"
let [<Literal>] AssemblyFileVersion = "8.1.11.0"
8 changes: 4 additions & 4 deletions src/AssemblyInfo.fs
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@ open System.Reflection
[<assembly: AssemblyTitleAttribute("FSharp.Data")>]
[<assembly: AssemblyProductAttribute("FSharp.Data")>]
[<assembly: AssemblyDescriptionAttribute("Library of F# type providers and data access tools")>]
[<assembly: AssemblyVersionAttribute("8.1.10.0")>]
[<assembly: AssemblyFileVersionAttribute("8.1.10.0")>]
[<assembly: AssemblyVersionAttribute("8.1.11.0")>]
[<assembly: AssemblyFileVersionAttribute("8.1.11.0")>]
do ()

module internal AssemblyVersionInformation =
let [<Literal>] AssemblyTitle = "FSharp.Data"
let [<Literal>] AssemblyProduct = "FSharp.Data"
let [<Literal>] AssemblyDescription = "Library of F# type providers and data access tools"
let [<Literal>] AssemblyVersion = "8.1.10.0"
let [<Literal>] AssemblyFileVersion = "8.1.10.0"
let [<Literal>] AssemblyVersion = "8.1.11.0"
let [<Literal>] AssemblyFileVersion = "8.1.11.0"
20 changes: 12 additions & 8 deletions src/FSharp.Data.Html.Core/HtmlParser.fs
Original file line number Diff line number Diff line change
Expand Up @@ -177,12 +177,16 @@ module internal HtmlParser =
x.Tokens <- result :: x.Tokens

member x.IsFormattedTag =
match x.CurrentTagName().ToLowerInvariant() with
// Tag names are already lowercased at read time (ConsTag applies ToLowerInvariant),
// so no need to call ToLowerInvariant here.
match x.CurrentTagName() with
| "pre" -> true
| _ -> false

member x.IsScriptTag =
match x.CurrentTagName().ToLowerInvariant() with
// Tag names are already lowercased at read time (ConsTag applies ToLowerInvariant),
// so no need to call ToLowerInvariant here.
match x.CurrentTagName() with
| "script"
| "style" -> true
| _ -> false
Expand All @@ -200,15 +204,15 @@ module internal HtmlParser =
else
Tag(false, name, x.GetAttributes())

// pre is the only default formatted tag, nested pres are not
// allowed in the spec.
if x.IsFormattedTag then
// "pre" is the only default formatted tag; nested pre elements are not
// allowed in the spec. Use `name` directly to avoid re-computing CurrentTagName().
// The else branch (x.HasFormattedParent <- x.HasFormattedParent || false) was a
// no-op and has been removed.
if name = "pre" then
x.HasFormattedParent <- not isEnd
else
x.HasFormattedParent <- x.HasFormattedParent || x.IsFormattedTag

x.InsertionMode <-
if x.IsScriptTag && (not isEnd) then
if (name = "script" || name = "style") && (not isEnd) then
ScriptMode
else
DefaultMode
Expand Down
Loading