[PR #416] [MERGED] Random improvements #1006

Open
opened 2026-01-29 14:48:29 +00:00 by claunia · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/xoofx/markdig/pull/416
Author: @MihaZupan
Created: 4/7/2020
Status: Merged
Merged: 4/18/2020
Merged by: @xoofx

Base: masterHead: new


📝 Commits (10+)

  • cce1b99 Drop net35 and net40 targets
  • f7d7632 Unseal MarkdownParserContext
  • 8300a9c Add System.Memory package for netstandard2.0
  • 5f453fb Remove ExcludeFromCodeCoverage compat for net35
  • 9ca5cdc Remove substring allocation in RomanToArabic
  • ee97d32 Remove MethodImplOptionPortable compat helper
  • 2d97628 Optimize StringSlice helpers
  • f0269fc Remove ArrayHelper
  • 09593ff Remove unused Helper
  • 3d005d6 Avoid allocations in EntityHelper

📊 Changes

57 files changed (+571 additions, -776 deletions)

View changed files

📝 src/Markdig.Tests/Markdig.Tests.csproj (+1 -1)
📝 src/Markdig.Tests/TestDescendantsOrder.cs (+13 -13)
📝 src/Markdig/Extensions/Abbreviations/AbbreviationHelper.cs (+5 -4)
📝 src/Markdig/Extensions/Abbreviations/AbbreviationParser.cs (+2 -1)
📝 src/Markdig/Extensions/Emoji/EmojiMapping.cs (+6 -6)
📝 src/Markdig/Extensions/Emoji/EmojiParser.cs (+2 -1)
📝 src/Markdig/Extensions/ListExtras/ListExtraItemParser.cs (+6 -6)
📝 src/Markdig/Extensions/MediaLinks/HostProviderBuilder.cs (+4 -2)
📝 src/Markdig/Extensions/SelfPipeline/SelfPipelineExtension.cs (+5 -4)
📝 src/Markdig/Extensions/Tables/PipeTableParser.cs (+1 -2)
src/Markdig/Helpers/ArrayHelper.cs (+0 -17)
📝 src/Markdig/Helpers/CharHelper.cs (+58 -80)
📝 src/Markdig/Helpers/CharacterMap.cs (+101 -58)
📝 src/Markdig/Helpers/CompactPrefixTree.cs (+12 -236)
📝 src/Markdig/Helpers/EntityHelper.cs (+37 -13)
src/Markdig/Helpers/ExcludeFromCodeCoverageAttribute.cs (+0 -10)
📝 src/Markdig/Helpers/HtmlHelper.cs (+7 -33)
📝 src/Markdig/Helpers/LineReader.cs (+4 -1)
📝 src/Markdig/Helpers/LinkHelper.cs (+3 -3)
src/Markdig/Helpers/MethodImplOptionPortable.cs (+0 -15)

...and 37 more files

📄 Description

  • Dropping support for net35, net40. Now multi-targeting netstandard2.0, netcoreapp2.1, netcoreapp3.1. 🎉
  • Removed helpers such as ArrayHelper, MethodImplOptionPortable, ExcludeFromCodeCoverage that were needed for framework target compat.
  • Unsealed MarkdownParserContext (@patriksvensson I don't suppose you somehow rely on it being sealed? I figure having it unsealed adds more value)
  • Removed some allocations (b090f24, 84ec832, bdfaa27, 30d0924), 2% overall.
  • Improved codegen for some StringSlice helpers.
  • Used ThrowHelper everywhere, hopefully more things can inline now.
  • Further optimized CharacterMap in 256b4d3. @craigwi while not the reason I did it, this may also workaround the UWP issue.

Overall ~6% parsing throughput increase. Allocation-wise we are now very close to noise-free. The vast majority of allocations are now the AST itself and some strings.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/xoofx/markdig/pull/416 **Author:** [@MihaZupan](https://github.com/MihaZupan) **Created:** 4/7/2020 **Status:** ✅ Merged **Merged:** 4/18/2020 **Merged by:** [@xoofx](https://github.com/xoofx) **Base:** `master` ← **Head:** `new` --- ### 📝 Commits (10+) - [`cce1b99`](https://github.com/xoofx/markdig/commit/cce1b99edc41288c80b2d1877797004b9d8fd5ae) Drop net35 and net40 targets - [`f7d7632`](https://github.com/xoofx/markdig/commit/f7d763230de19b3832c23ffd8c8267aa1ef1fa23) Unseal MarkdownParserContext - [`8300a9c`](https://github.com/xoofx/markdig/commit/8300a9cca226437f91f0412946140ff7fb67a017) Add System.Memory package for netstandard2.0 - [`5f453fb`](https://github.com/xoofx/markdig/commit/5f453fbe92ae541bb612063890fb453392b96bcb) Remove ExcludeFromCodeCoverage compat for net35 - [`9ca5cdc`](https://github.com/xoofx/markdig/commit/9ca5cdcb3106066ddd29d1654c00e91bdc4aef8f) Remove substring allocation in RomanToArabic - [`ee97d32`](https://github.com/xoofx/markdig/commit/ee97d32ef026b4216b5b21fa765511f267e9c2f7) Remove MethodImplOptionPortable compat helper - [`2d97628`](https://github.com/xoofx/markdig/commit/2d97628cfd80f88ed22615c1393d5cb9840b38e8) Optimize StringSlice helpers - [`f0269fc`](https://github.com/xoofx/markdig/commit/f0269fc61fbdd2b3c402527cef168f188b4c6eea) Remove ArrayHelper - [`09593ff`](https://github.com/xoofx/markdig/commit/09593ff3da65e4aef541f777586f81671fc6e1e5) Remove unused Helper - [`3d005d6`](https://github.com/xoofx/markdig/commit/3d005d6444a0fe01709cd7f18148ab20e2157289) Avoid allocations in EntityHelper ### 📊 Changes **57 files changed** (+571 additions, -776 deletions) <details> <summary>View changed files</summary> 📝 `src/Markdig.Tests/Markdig.Tests.csproj` (+1 -1) 📝 `src/Markdig.Tests/TestDescendantsOrder.cs` (+13 -13) 📝 `src/Markdig/Extensions/Abbreviations/AbbreviationHelper.cs` (+5 -4) 📝 `src/Markdig/Extensions/Abbreviations/AbbreviationParser.cs` (+2 -1) 📝 `src/Markdig/Extensions/Emoji/EmojiMapping.cs` (+6 -6) 📝 `src/Markdig/Extensions/Emoji/EmojiParser.cs` (+2 -1) 📝 `src/Markdig/Extensions/ListExtras/ListExtraItemParser.cs` (+6 -6) 📝 `src/Markdig/Extensions/MediaLinks/HostProviderBuilder.cs` (+4 -2) 📝 `src/Markdig/Extensions/SelfPipeline/SelfPipelineExtension.cs` (+5 -4) 📝 `src/Markdig/Extensions/Tables/PipeTableParser.cs` (+1 -2) ➖ `src/Markdig/Helpers/ArrayHelper.cs` (+0 -17) 📝 `src/Markdig/Helpers/CharHelper.cs` (+58 -80) 📝 `src/Markdig/Helpers/CharacterMap.cs` (+101 -58) 📝 `src/Markdig/Helpers/CompactPrefixTree.cs` (+12 -236) 📝 `src/Markdig/Helpers/EntityHelper.cs` (+37 -13) ➖ `src/Markdig/Helpers/ExcludeFromCodeCoverageAttribute.cs` (+0 -10) 📝 `src/Markdig/Helpers/HtmlHelper.cs` (+7 -33) 📝 `src/Markdig/Helpers/LineReader.cs` (+4 -1) 📝 `src/Markdig/Helpers/LinkHelper.cs` (+3 -3) ➖ `src/Markdig/Helpers/MethodImplOptionPortable.cs` (+0 -15) _...and 37 more files_ </details> ### 📄 Description - Dropping support for `net35`, `net40`. Now multi-targeting `netstandard2.0`, `netcoreapp2.1,` `netcoreapp3.1`. 🎉 - Removed helpers such as `ArrayHelper`, `MethodImplOptionPortable`, `ExcludeFromCodeCoverage` that were needed for framework target compat. - Unsealed `MarkdownParserContext` (@patriksvensson I don't suppose you somehow rely on it being sealed? I figure having it unsealed adds more value) - Removed some allocations (b090f24, 84ec832, bdfaa27, 30d0924), 2% overall. - Improved codegen for [some StringSlice helpers](https://github.com/lunet-io/markdig/commit/f0830b3237b51e4297bc93ce0954ce80eb24cf15). - Used `ThrowHelper` [everywhere](https://github.com/lunet-io/markdig/commit/a99e65004c1faf7304472829a863f1b55dfe6e38), hopefully more things can inline now. - Further optimized `CharacterMap` in 256b4d3. @craigwi while not the reason I did it, this may also workaround the UWP issue. Overall ~6% parsing throughput increase. Allocation-wise we are now very close to noise-free. The vast majority of allocations are now the AST itself and some strings. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
claunia added the pull-request label 2026-01-29 14:48:29 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/markdig#1006