using System.IO.Compression;

#pragma warning disable 414, 3021

namespace MyApplication
{
    [Obsolete("...")]
    class Program : IInterface
    {
        public static List<int> JustDoIt(int count)
        {
            Span<int> numbers = stackalloc int[length];
            Console.WriteLine($"Hello {Name}!");
            return new List<int>(new int[] { 1, 2, 3 })
        }
    }
}

language: ...

style: base16/tomorrow

Get version 11.3.1

Usage

Contribute

@highlightjs

News

  1. Version 11.3.1

    Build:

    • (fix) Grammar CDN modules not generated correctly. (#3363) Josh Goebel
  2. Version 11.0.1

    • (fix) use console.log for .js.js deprecation warning (#3222) Josh Goebel
    • (fix) do not restrict exports from cdn-assets (#3223) Josh Goebel
  3. Version 11.0.0

    This is a major release. As such it contains breaking changes which may require action from users. Please read VERSION_11_UPGRADE.md for a detailed summary of all breaking changes.

    Potentially breaking changes

    Unless otherwise attributed items below are thanks to Josh Goebel (ref: #2558).

    The below list should only be considered to be a high-level summary.

    Deprecations / Removals / API Changes:

    • initHighlighting() and initHighlightingOnLoad() deprecated. Use highlightAll().
    • highlightBlock(el) deprecated. Use highlightElement(el)
    • before:highlightBlock & after:highlightBlock callbacks deprecated. Use equivalent highlightElement callbacks.
    • highlight(languageName, code, ignoreIllegals, continuation) signature deprecated. Use highlight(code, {language, ignoreIllegals}).
    • Deprecated highlight() signature no longer supports continuation argument.
    • tabReplace option removed. Consider a plugin.
    • useBR option removed. Consider a plugin or CSS.
    • requireLanguage() removed. Use getLanguage().
    • endSameAsBegin mode key removed. Use hljs.END_SAME_AS_BEGIN.
    • lexemes mode key removed. Use keywords.$pattern.
    • The return values/keys of some APIs have changed slightly.

    Security:

    • HTML auto-passthru has been removed. Consider a plugin.
    • Unescaped HTML is now stripped (for security). A warning is logged to the console. (#3057) Josh Goebel

    Themes:

    • The default padding of all themes increases (0.5em => 1em).
    • schoolbook has been updated to remove the lined background.
    • github updated to better match modern GitHub (#1616) Jan Pilzer
    • github-gist has been removed in favor of github Jan Pilzer
    • Base16 named themes have been updated to their "canonical" versions
    • nnfx updated for v11 xml styles and improved css support

    Language Grammars:

    • Default CDN build drops support for several languages.
    • Some language grammar files have been removed.
    • Some redundant language aliases have been removed.

    Other changes

    Parser:

    • enh(vala) improve language detection for Vala (#3195) [Konrad Rudolph][]
    • enh(r) add support for operators, fix number highlighting bug (#3194, #3195) [Konrad Rudolph][]
    • enh(parser) add beginScope and endScope to allow separate scoping begin and end (#3159) Josh Goebel
    • enh(parsed) endScope now supports multi-class matchers as well (#3159) Josh Goebel
    • enh(parser) highlightElement now always tags blocks with a consistent language-[name] class Josh Goebel
      • subLanguage span tags now also always have the language- prefix added
    • enh(parser) support multi-class matchers (#3081) Josh Goebel
    • enh(parser) Detect comments based on english like text, rather than keyword list Josh Goebel
    • adds title.class.inherited sub-scope support Josh Goebel
    • adds title.class sub-scope support (#3078) Josh Goebel
    • adds title.function sub-scope support (#3078) Josh Goebel
    • adds beforeMatch compiler extension (#3078) Josh Goebel
    • adds cssSelector configuration option (#3180) James Edington

    Grammars:

    • enh(all) .meta-keyword => .meta .keyword (nested scopes) (#3167) Josh Goebel
    • enh(all) .meta-string => .meta .string (nested scopes) (#3167) Josh Goebel
    • enh(swift) add actor keyword (#3171) Bradley Mackey
    • enh(crystal) highlight variables (#3154) Josh Goebel
    • fix(ruby) Heredoc without interpolation (#3154) Josh Goebel
    • enh(swift) add @resultBuilder attribute (#3151) Bradley Mackey
    • enh(processing) added pde alias (#3142) Dylan McBean
    • enh(thrift) Use proper scope for types Josh Goebel
    • enh(java) Simplified class-like matcher (#3078) Josh Goebel
    • enh(cpp) Simplified class-like matcher (#3078) Josh Goebel
    • enh(rust) Simplified class-like matcher (#3078) Josh Goebel
    • enh(actionscript) Simplified class-like matcher (#3078) Josh Goebel
    • enh(arcade) function.title => title.function (#3078) Josh Goebel
    • enh(autoit) function.title => title.function (#3078) Josh Goebel
    • enh(c) function.title => title.function (#3078) Josh Goebel
    • enh(rust) support function invoke and impl (#3078) Josh Goebel
    • chore(properties) disable auto-detection #3102 Josh Goebel
    • fix(properties) fix incorrect handling of non-alphanumeric keys #3102 [Egor Rogov][]
    • enh(java) support functions with nested template types (#2641) Josh Goebel
    • enh(java) highlight types and literals separate from keywords (#3074) Josh Goebel
    • enh(shell) add alias ShellSession Ryan Mulligan
    • enh(shell) consider one space after prompt as part of prompt Ryan Mulligan
    • fix(nginx) fix bug with $ and @ variables Josh Goebel
    • enh(nginx) improving highlighting of some sections Josh Goebel
    • fix(vim) variable names may not be zero length Josh Goebel
    • enh(sqf) Updated keywords to Arma 3 v2.02 (#3084) R3voA3
    • enh(sqf) Refactored function regex to match CBA component func naming scheme (#3181) JonBons
    • enh(nim) highlight types properly (not as built-ins) Josh Goebel
    • (chore) throttle deprecation messages (#3092) [Mihkel Eidast][]
    • enh(c) Update keyword list for C11/C18 (#3010) Josh Goebel
    • enh(parser) highlight object properties (#3072) Josh Goebel
    • enh(javascript/typescript) highlight object properties (#3072) Josh Goebel
    • enh(haskell) add support for BinaryLiterals (#3150) Martijn Bastiaan
    • enh(haskell) add support for NumericUnderscores (#3150) Martijn Bastiaan
    • enh(haskell) add support for HexFloatLiterals (#3150) Martijn Bastiaan
    • fix(c,cpp) allow declaring multiple functions and (for C++) parenthetical initializers (#3155) [Erik Demaine][]
    • enh(rust) highlight raw byte string literals correctly (#3173) Nico Abram
    • fix(cpp) fix detection of common functions that are function templates (#3178) Kris van Rens
    • enh(cpp) add various keywords and commonly used types for hinting (#3178) Kris van Rens
    • enh(cpp) cleanup reserved keywords and type lists (#3178) Kris van Rens

    New Languages:

    • Added 3rd party Glimmer grammar to SUPPORTED_LANGUAGES(#3123) NullVoxPopuli
    • Added Wren support Josh Goebel
    • Added NestedText support Josh Goebel
    • Added WebAssembly language grammar Josh Goebel
    • Added 3rd party Splunk search processing language grammar to SUPPORTED_LANGUAGES (#3090) Wei Su
    • Added 3rd party ZenScript grammar to SUPPORTED_LANGUAGES(#3106) Jared Luboff
    • Added 3rd party Papyrus grammar to SUPPORTED_LANGUAGES(#3125) Mike Watling

    Theme Improvements:

    • Added all official Base16 themes (over 150 new themes) Josh Goebel
    • chore(themes) remove builtin-name CSS class (#3119) Josh Goebel
    • chore(theme) Update GitHub theme css to match GitHub's current styling (#1616) Jan Pilzer
    • chore(theme) Update Srcery theme css to match its Emacs implementation [Chen Bin][]

    New Themes:

    Dev Improvements:

    • (chore) greatly improve match scope visualization in dev tool (#3126) NullVoxPopuli
    • (fix) CSS used for devtool needed an adjustment to fix too wide of content (#3133) NullVoxPopuli
  4. Version 10.7.2

    This is a patch release. The only change is that deprecation messages are throttled and shown only once.

  5. Version 10.7.1

    • fix(parser) Resolves issues with TypeScript types Josh Goebel

    Version 10.7.0

    Parser:

    • enh(api) add unregisterLanguage method (#3009) Antoine du Hamel
    • enh: Make alias registration case insensitive (#3026) David Ostrovsky
    • fix(parser) highlightAll() now works if the library is lazy loaded Josh Goebel

    New Languages:

    • Added 3rd party RiScript grammar to SUPPORTED_LANGUAGES (#2988) [John C][]
    • Added 3rd party HLSL grammar to SUPPORTED_LANGUAGES (#3002) Stef Levesque
    • Added 3rd party Q# grammar to SUPPORTED_LANGUAGES(#3006) Vyron Vasileiadis

    Language grammar improvements:

    • fix(python) allow keywords immediately following numbers (#2985) Josh Goebel
    • fix(xml) char immediately following tag close mis-highlighted (#3044) Josh Goebel
    • fix(ruby) fix defined?() mis-highlighted as def (#3025) Josh Goebel
    • fix(c) comments after #include <str> blocks (#3041) Josh Goebel
    • fix(cpp) comments after #include <str> blocks (#3041) Josh Goebel
    • enh(cpp) Highlight all function dispatches (#3005) Josh Goebel
    • enh(python) support type hints and better type support (#2972) Josh Goebel
    • enh(gml) Add additional GML 2.3 keywords (#2984) xDGameStudios
    • fix(cpp) constructor support for initializers (#3001) Josh Goebel
    • enh(php) Add trait to class-like naming patterns (#2997) Ayesh
    • enh(php) Add Stringable, UnhandledMatchError, and WeakMap classes/interfaces (#2997) Ayesh
    • enh(php) Add mixed to list of keywords (#2997) Ayesh
    • enh(php) Add support binary, octal, hex and scientific numerals with underscore separator support (#2997) Ayesh
    • enh(php) Add support for Enums (#3004) Ayesh
    • enh(ecmascript) Add built-in types Vaibhav Chanana
    • enh(kotlin) Add kts as an alias for Kotlin (#3021) Vaibhav Chanana
    • enh(css) Add font-smoothing to attributes list for CSS (#3027) AndyKIron
    • fix(python) Highlight print and exec as a builtin (#1468) Samuel Colvin
    • fix(csharp) Fix unit being highlighted instead of uint (#3046) [Spacehamster][]
    • enh(swift) add async/await keywords (#3048) [Bradley Mackey][]

    Deprecations:

    • highlight(languageName, code, ignoreIllegals, continuation) deprecated as of 10.7
      • Please use the newer API which takes code and then accepts options as an object
      • IE: highlight(code, {language, ignoreIllegals})
      • continuation is for internal use only and no longer supported
    • highlightBlock(el) deprecated as of 10.7.
      • Please use highlightElement(el) instead.
      • Plugin callbacks renamed before/after:highlightBlock => before/after:highlightElement
      • Plugin callback now takes el vs block attribute
      • The old API and callbacks will be supported until v12.
  6. Version 10.7.0

    Parser:

    • enh(api) add unregisterLanguage method (#3009) Antoine du Hamel
    • enh: Make alias registration case insensitive (#3026) David Ostrovsky
    • fix(parser) highlightAll() now works if the library is lazy loaded Josh Goebel

    New Languages:

    • Added 3rd party RiScript grammar to SUPPORTED_LANGUAGES (#2988) [John C][]
    • Added 3rd party HLSL grammar to SUPPORTED_LANGUAGES (#3002) Stef Levesque
    • Added 3rd party Q# grammar to SUPPORTED_LANGUAGES(#3006) Vyron Vasileiadis

    Language grammar improvements:

    • fix(python) allow keywords immediately following numbers (#2985) Josh Goebel
    • fix(xml) char immediately following tag close mis-highlighted (#3044) Josh Goebel
    • fix(ruby) fix defined?() mis-highlighted as def (#3025) Josh Goebel
    • fix(c) comments after #include <str> blocks (#3041) Josh Goebel
    • fix(cpp) comments after #include <str> blocks (#3041) Josh Goebel
    • enh(cpp) Highlight all function dispatches (#3005) Josh Goebel
    • enh(python) support type hints and better type support (#2972) Josh Goebel
    • enh(gml) Add additional GML 2.3 keywords (#2984) xDGameStudios
    • fix(cpp) constructor support for initializers (#3001) Josh Goebel
    • enh(php) Add trait to class-like naming patterns (#2997) Ayesh
    • enh(php) Add Stringable, UnhandledMatchError, and WeakMap classes/interfaces (#2997) Ayesh
    • enh(php) Add mixed to list of keywords (#2997) Ayesh
    • enh(php) Add support binary, octal, hex and scientific numerals with underscore separator support (#2997) Ayesh
    • enh(php) Add support for Enums (#3004) Ayesh
    • enh(ecmascript) Add built-in types Vaibhav Chanana
    • enh(kotlin) Add kts as an alias for Kotlin (#3021) Vaibhav Chanana
    • enh(css) Add font-smoothing to attributes list for CSS (#3027) AndyKIron
    • fix(python) Highlight print and exec as a builtin (#1468) Samuel Colvin
    • fix(csharp) Fix unit being highlighted instead of uint (#3046) [Spacehamster][]
    • enh(swift) add async/await keywords (#3048) [Bradley Mackey][]

    Deprecations:

    • highlight(languageName, code, ignoreIllegals, continuation) deprecated as of 10.7
      • Please use the newer API which takes code and then accepts options as an object
      • IE: highlight(code, {language, ignoreIllegals})
      • continuation is for internal use only and no longer supported
    • highlightBlock(el) deprecated as of 10.7.
      • Please use highlightElement(el) instead.
      • Plugin callbacks renamed before/after:highlightBlock => before/after:highlightElement
      • Plugin callback now takes el vs block attribute
      • The old API and callbacks will be supported until v12.
  7. Version 10.6.0

    New Languages:

    • Added 3rd party Laravel Blade grammar to SUPPORTED_LANGUAGES (#2944) Michael Newton

    Language grammar improvements:

    • enh(scala) fix triple quoted strings (#2987) Josh Goebel
    • enh(perl) Much improved regex detection (#2960) Josh Goebel
    • enh(swift) Improved highlighting for operator and precedencegroup declarations. (#2938) Steven Van Impe
    • fix(xml) Support single-character namespaces. (#2957) [Jan Pilzer][]
    • enh(ruby) Support for character literals (#2950) Vaibhav Chanana
    • enh(powershell) Add three VALID_VERBS and update the reference link (#2981) davidhcefx

    Grammar Deprecations:

    • Deprecate c-like, though you should not be using it directly anyways.
      • will be removed in v11.
    • c and cpp are now wholly unique grammars that will diverge over time

    Parser:

    • new simpler highlightAll() API (#2962) Josh Goebel
      • this should be a drop-in replacement for both initHighlighting() and initHighlightingOnLoad()
      • note: it does not prevent itself from being called multiple times (as the previous API did)
    • beginKeyword no longer bestows double relevance (#2953) Josh Goebel
    • allow keywords to be an array of strings Josh Goebel
    • add modes.MATCH_NOTHING_RE that will never match
      • This can be used with end to hold a mode open (it must then be ended with endsParent in one of it's children modes) Josh Goebel

    Deprecations:

    • initHighlighting() and initHighlightingOnLoad() deprecated.
      • Please use the new highlightAll() API instead.
      • Deprecated as of 10.6.
      • These will both be aliases to highlightAll in v11.
  8. Version 10.5.0

    Build:

    • Add Subresource Integrity digest lists to cdn-assets Josh Goebel
    • R and VB.net grammars now ship in our default build (:common) Josh Goebel

    Parser:

    • add match as sugar for simple begin only matches (#2834) Josh Goebel
    • allow illegal to also be an array of regex (#2834) Josh Goebel
    • add compilerExtensions allows grammers to influence mode compilation (#2834) Josh Goebel
      • some internal pieces are now simple compiler extensions

    New Languages:

    • Added 3rd party Red & Rebol grammar to SUPPORTED_LANGUAGES (#2872) Oldes Huhuman

    Language grammar improvements:

    • enh(cpp): Support C++ pack expansion in function arguments Martin Dørum
    • enh(makefile): Add make as an alias (#2883) tripleee
    • enh(swift) Improved grammar for strings (#2819) Steven Van Impe
    • enh(swift) Grammar improvements (#2908) Steven Van Impe
      • New grammar for keywords and built-ins
      • Added support for operator highlighting
      • New grammar for attributes
      • Added support for quoted identifiers, implicit parameters, and property wrapper projections
      • Support for more complex expressions in string interpolation
    • enh(swift) Improved highlighting for types and generic arguments (#2920) Steven Van Impe
    • fix(http) avoid recursive sublanguage and tighten rules (#2893) Josh Goebel
    • fix(asciidoc): Handle section titles level 5 (#2868) Vaibhav Chanana
    • fix(asciidoc): Support unconstrained emphasis syntax (#2869) Guillaume Grossetie
    • enh(scheme) Allow [] for argument lists (#2913) Josh Goebel
    • enh(vb) Large rework of VB.net grammar (#2808) Jan Pilzer
      • Adds support for Date data types, see (#2775)
      • Adds support for REM comments and fixes ''' doctags (#2875) (#2851)
        • Custom number mode to support VB.net specific number flags
        • Hex (&H), Oct (&O), and binary (&B) prefixes
        • Separating digits with underscores: 90_946
      • Type suffixes: 123UI (unsigned integer)
      • Improves directives detection and adds support for Enable, Disable, and Then keywords
      • Adds more markup tests
    • fix(javascript) Empty block-comments break highlighting (#2896) Jan Pilzer
    • enh(dart) Fix empty block-comments from breaking highlighting (#2898) Jan Pilzer
    • enh(dart) Fix empty doc-comment eating next line Jan Pilzer
    • enh(asciidoc) Adds support for unconstrained bold syntax (#2869) Guillaume Grossetie
    • enh(c-like) Incorrect highlighting for interger suffix (#2919) Vaibhav Chanana
    • enh(properties) Correctly handle trailing backslash (#2922) Vaibhav Chanana

    Recent Deprecations:

    • HTML "merging" is deprecated. (#2873) Josh Goebel
      • HTML inside <pre> blocks will no longer be magically merged back into the highlighted code's HTML result - it will instead be silently removed.
      • Consider using a plugin if you truly need this functionality
      • Deprecated as of 10.5.0 - will be removed in v11.
    • tabReplace option deprecated. (#2873) Josh Goebel
      • Consider: Use the CSS tab-size property, or simply pre-process the text yourself before rendering the initial HTML
      • otherwise, use a plugin
      • Deprecated as of 10.5.0 - will be removed in v11.
    • useBR option deprecated. (#2559) Josh Goebel
      • Recommended: You really should just use the HTML <pre> tag
      • or perhaps try CSS white-space: pre;
      • otherwise, use a plugin
      • Deprecated as of 10.3.0 - will be removed in v11.
    • requireLanguage API is deprecated, will be removed in v11.0.
      • Consider: Use getLanguage (with custom error handling) or built-time dependencies.
      • See Library API for more information.
      • Deprecated as of 10.4.0 - will be removed in v11.
  9. Version 10.4.1

    Security

    • (fix) Exponential backtracking fixes for: Josh Goebel
      • cpp
      • handlebars
      • gams
      • perl
      • jboss-cli
      • r
      • erlang-repl
      • powershell
      • routeros
    • (fix) Polynomial backtracking fixes for: Josh Goebel
      • asciidoc
      • reasonml
      • latex
      • kotlin
      • gcode
      • d
      • aspectj
      • moonscript
      • coffeescript/livescript
      • csharp
      • scilab
      • crystal
      • elixir
      • basic
      • ebnf
      • ruby
      • fortran/irpf90
      • livecodeserver
      • yaml
      • x86asm
      • dsconfig
      • markdown
      • ruleslanguage
      • xquery
      • sqf

    Very grateful to Michael Schmidt for all the help.

  10. Version 10.4.0

    A largish release with many improvements and fixes from quite a few different contributors. Enjoy!

    Deprecations:

    • (chore) requireLanguage is deprecated.
      • Prefer getLanguage (with custom error handling) or built-time dependencies.
      • See Library API for more information.

    Parser:

    • enh(parser) use negative look-ahead for beginKeywords support (#2813) Josh Goebel
    • enh(grammars) allow classNameAliases for more complex grammars Josh Goebel
    • fix(vue): Language name now appears in CSS class (#2807) Michael Rush
    • (chore) Clean up all regexs to be UTF-8 compliant/ready (#2759) Josh Goebel

    New Languages:

    • Added 3rd party Chapel grammar to SUPPORTED_LANGUAGES (#2806) Brad Chamberlain
    • Added BBCode grammar to SUPPORTED_LANGUAGES (#2867) Paul Reid
    • enh(javascript) Added node-repl for Node.js REPL sessions (#2792) Marat Nagayev

    Language Improvements:

    • enh(shell) Recognize prompts which contain tilde ~ (#2859) Guillaume Grossetie
    • enh(shell) Add support for multiline commands with line continuation \ (#2861) Guillaume Grossetie
    • enh(autodetect) Over 30+ improvements to auto-detect (#2745) Josh Goebel
      • 4-5% improvement in auto-detect against large sample set
      • properties, angelscript, lsl, javascript, n1ql, ocaml, ruby
      • protobuf, hy, scheme, crystal, yaml, r, vbscript, groovy
      • python, java, php, lisp, matlab, clojure, csharp, css
    • fix(r) fixed keywords not properly spaced (#2852) Josh Goebel
    • fix(javascript) fix potential catastrophic backtracking (#2852) Josh Goebel
    • fix(livescript) fix potential catastrophic backtracking (#2852) Josh Goebel
    • bug(xml) XML grammar was far too imprecise/fuzzy Josh Goebel
    • enh(xml) Improve precision to prevent false auto-detect positives Josh Goebel
    • fix(js/ts) Prevent for/while/if/switch from falsly matching as functions (#2803) Josh Goebel
    • enh(julia) Update keyword lists for Julia 1.x (#2781) Fredrik Ekre
    • enh(python) Match numeric literals per the language reference Richard Gibson
    • enh(ruby) Match numeric literals per language documentation Richard Gibson
    • enh(javascript) Match numeric literals per ECMA-262 spec Richard Gibson
    • enh(java) Match numeric literals per Java Language Specification Richard Gibson
    • enh(swift) Match numeric literals per language reference Richard Gibson
    • enh(php) highlight variables (#2785) Taufik Nurrohman
    • fix(python) Handle comments on decorators (#2804) Jonathan Sharpe
    • enh(diff) improve highlighting of diff for git patches [Florian Bezdeka][]
    • fix(llvm) lots of small improvements and fixes (#2830) Josh Goebel
    • enh(mathematica) Rework entire implementation Patrick Scheibe
      • Correct matching of the many variations of Mathematica's numbers
      • Matching of named-characters aka special symbols like \[Gamma]
      • Updated list of version 12.1 built-in symbols
      • Matching of patterns, slots, message-names and braces
    • fix(swift) Handle keywords that start with # Marcus Ortiz
    • enh(swift) Match some keyword Marcus Ortiz
    • enh(swift) Match @main attribute Marcus Ortiz

    Dev Improvements:

    • chore(dev) add theme picker to the tools/developer tool (#2770) Josh Goebel
    • fix(dev) the Vue.js plugin no longer throws an exception when hljs is not in the global namespace Kyle Brown

    New themes: