NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #1841 most downloaded on crates.io
library for high quality syntax highlighting and code intelligence using Sublime Text's grammars
Last release 1 years ago
27 Sep 2025
Release timing varies
gaps range from 3 weeks to 1.6 years
Most releases are documented
notes for 30 of 46 stable releases
3 versions withdrawn
withdrawn after publishing
10 years old
49 releases · first in 2016
Deprecate syntect::SCOPE_REPO for removal [ #580 ]
HighlightLines::from_state() constructor [#569]bitflags with a manual implementation [#590]public-api to work with new lockfile versions [#591]thiserror to v2 [#594]fancy-regex to 0.16.2 [#596]rust_onig version to avoid build failures on newer GCC versions [#584]syntect::parsing::SCOPE_REPO for removal [#580]rustfmt [#528]BufWriter to improve unoptimized serialization perf [#554]Cargo.lock to avoid flaky CI issues [#567]expect-test to insta [#568] then later to public-api's snapshot-testing support [#595]cargo-hack to check many different features in CI [#593]One column per quarter.
Eliminate syntect library's dependency on serde's "derive" feature. Increases build parallelism.
regex-syntax to 0.8.Fix how syntect::split_at() handles multi-byte characters
syntect::util::split_at() handles multi-byte charactersPartialEq for Themefancy-regex to 0.11regex-syntax to 0.7lazy_static with once_cellDebug impl of syntect::highlighting::Color less verboseRemove deprecated items ThemeSettings::highlight_foreground, ThemeSettings::selection_background, ClassedHTMLGenerator::new, ClassedHTMLGenerator::par…
Breaking changes
ContextId::new() from public API to support lazy-loading of syntaxesHighlightLines::highlight() to HighlightLines::highlight_line() to make it clear that the function takes one line at a timeplist dependency (used for loading themes) optional via new plist-load featuredump-load-rs and dump-create-rs features that has been identical to dump-load and dump-create for two yearsThemeSettings::highlight_foreground, ThemeSettings::selection_background, ClassedHTMLGenerator::new, ClassedHTMLGenerator::parse_html_for_line, html::css_for_theme, html::tokens_to_classed_html and html::tokens_to_classed_spans#[non_exhaustive]Result to allow propagation of errors:
html::ClassedHTMLGenerator::parse_html_for_line_which_includes_newlinehtml::append_highlighted_html_for_styled_linehtml::css_for_theme_with_class_stylehtml::highlighted_html_for_stringhtml::line_tokens_to_classed_spanshtml::styled_line_to_highlighted_htmlparsing::ParseState::parse_lineparsing::ScopeStack::applyparsing::ScopeStack::apply_with_hookparsing::syntax_definition::Context::match_atparsing::syntax_definition::ContextReference::idparsing::syntax_definition::ContextReference::resolveOther changes
Plain Text if a referenced syntax is missinghidden_file_extensions key in syntaxes.Error and Display for all error enums by using thiserrorlazycell with once_cell to fix crash on lazy initializationScopeRangeIteratorfrom_dump_file() ~15% fasterfrom_dump_file()This version was yanked from crates.io due to a semver violation issue.
This version was yanked from crates.io due to a semver violation issue.
See the release notes for v4.7.0, this release removes a new Cargo feature which constituted a semver violation:
See the release notes for v4.7.0, this release removes a new Cargo feature which constituted a semver violation:
This version was yanked from crates.io due to a semver violation issue.
Add html::line_tokens_to_classed_spans to also take a mutable ScopeStack, deprecate tokens_to_classed_spans, to avoid panics and incorrect highlightin…
html::line_tokens_to_classed_spans to also take a mutable ScopeStack, deprecate tokens_to_classed_spans, to avoid panics and incorrect highlighting.find_unlinked_contexts to SyntaxSetsyntaxes method to SyntaxSetBuilderfancy-regex to v0.7 and yaml-rust to v0.4.5Added a new function for producing classed HTML which handles newlines correctly and deprecated old one. #307
Errors are now Send + Sync + 'static #304
Send + Sync + 'static #304Fixes unnecesary dependency of the html feature on the assets feature. #300
Updates to new versions of onig and plist. The new onig version doesn't require bindgen thus making compilation easier. #293
onig and plist. The new onig version doesn't require bindgen thus making compilation easier. #293Properly handle backreferences in included contexts #288
Fix errors to not use the deprecated description() #286
Users can now opt in to a pure-Rust regex engine using Cargo features, making compilation easier in general. People experiencing difficulty compiling
fancy-regex engine optionUsers can now opt in to a pure-Rust regex engine using Cargo features, making
compilation easier in general. People experiencing difficulty compiling for
Windows and Wasm should try switching to fancy-regex. Note this currently
approximately halves highlighting speed.
See the Readme and #270 for details. Thanks to @robinst for implementing this!
Upgrading should cause no errors for nearly all users. Users using more unusual APIs may have a small amount of tweaking to do.
default-features = false you may need to update your features to choose a regex engine> Bug fixes and new utilities - Fixes multiple bugs - Add RangedHighlightIterator - Add as_latex_escaped util
Bug fixes and new utilities
as_latex_escaped util- Bump onig dependency - inconsequential patches
Actually make tokens_to_classed_spans public like intended
tokens_to_classed_spans public like intendedImprove support for generating classed HTML and fix a bug, old function is deprecated because it's impossible to use correctly
Fix a bug with syntaxes that used captures in lookarounds (#176 #215)
> Breaking changes and major new features
Breaking changes and major new features
This is a major release with multiple breaking API changes, although upgrading shouldn't be too difficult. It fixes bugs and comes with some nice new features.
SyntaxSet API has been revamped to use a builder and an arena of contexts. See example usage.SyntaxSet that goes with the rest of their arguments because of this new arena.LoadingError::ParseSyntaxhtml module now take the newlines version of syntaxes.
SyntaxSet::add_syntax -> SyntaxSetBuilder::addSyntaxSet::load_syntaxes -> SyntaxSetBuilder::add_from_folderSyntaxSet::load_plain_text_syntax -> SyntaxSetBuilder::add_plain_text_syntaxhtml::highlighted_snippet_for_string -> html::highlighted_html_for_string: also change to newlines SyntaxSethtml::highlighted_snippet_for_file -> html::highlighted_html_for_file: also change to newlines SyntaxSethtml::styles_to_coloured_html -> html::styled_line_to_highlighted_html: also change to newlines SyntaxSethtml::start_coloured_html_snippet -> html::start_highlighted_html_snippet: return type also changedSyntaxSetBuilder API for constructing new SyntaxSetsnonewlines mode is often buggy so we made it easier to use the newlines mode.
LinesWithEndings utility for iterating over the lines of a string with \n characters.html module to use newlines syntaxes.split_at and modify_range in the util module.ThemeSet::add_from_folder function (#200): For modifying existing theme sets.set: #177 #166embed to not include prototypes: #172 #1600.2 -> 0.30.2 -> 1.03.2.1 -> 4.1Check regexes compile upon loading from YAML (There's technically a small breaking change here if you match on the previously unused regex error, but…
Regex checking and plain file names
CMakeLists.txtnonewlines mode marginally less buggy (still prefer using newlines mode)Parsing now abandons a regex after reaching a recursion depth limit instead of taking forever
More robust parsing
Thanks to @robinst for the headline features of this release!
> Breaking Changes and New Stuff
Breaking Changes and New Stuff
static-onig feature was removed, static linking is now the defaultSyntaxDefinition::load_from_str now has an extra parameterembed syntax, see #124> New Inspired GitHub and libonig
New Inspired GitHub and libonig
Nothing published for this version
The old constants are still available but are deprecated and will be removed in v2.0.
Update bitflags & packages
This release changes how the constants for FontStyle and Color, relying on the new associated consts feature in Rust 1.20. The old constants are still available but are deprecated and will be removed in v2.0.
Packages were also updated to newer versions.
> Enable comparison of parse states
Enable comparison of parse states
Fixes comparisons of parse states so they are fast and don't recurse infinitely. Thanks @raphlinus
> Bug fixes and package updates
Bug fixes and package updates
syncat exampleNothing published for this version
> Pure Rust dump loading / creation features
Pure Rust dump loading / creation features
> Helper methods and more theme attributes
Helper methods and more theme attributes
Small release, adds a convenience method for highlighting an entire stack, and derives some more things on Scope.
Highlighting stacks
Small release, adds a convenience method for highlighting an entire stack, and derives some more things on Scope.
This release switches the dump format from rustc-serialize to Serde, anyone using custom dumps will have to update them.
Serde and optional parsing
This release switches the dump format from rustc-serialize to Serde, anyone using custom dumps will have to update them.
It also makes the parsing part of the library optional behind a feature flag, anyone not using the default feature flags probably will want to add the parsing flag.
> Bug fixes, tests, updates and feature flags
Bug fixes, tests, updates and feature flags
syntest example for running Sublime Text syntax testsNothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →