-
Notifications
You must be signed in to change notification settings - Fork 143
/
Copy pathCHANGELOG.md
328 lines (215 loc) · 17.1 KB
/
CHANGELOG.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
# Changelog
## [Version 5.2.0](https://github.com/trishume/syntect/compare/v5.1.0...v5.2.0) (2024-02-07)
### Improvements
- Eliminate syntect library's dependency on serde's "derive" feature. Increases build parallelism.
- Add parsing of gutterSettings.
### Dependencies
- Update `regex-syntax` to 0.8.
## [Version 5.1.0](https://github.com/trishume/syntect/compare/v5.0.0...v5.1.0) (2023-08-01)
### Improvements
- Fix how `syntect::util::split_at()` handles multi-byte characters
- Allow case insensitive search for .tmtheme paths
- impl `PartialEq` for `Theme`
### Dependencies
- Upgrade `fancy-regex` to 0.11
- Upgrade `regex-syntax` to 0.7
- Replace `lazy_static` with `once_cell`
### Other
- Change MSRV policy to "last three stable versions"
- Make `Debug` impl of `syntect::highlighting::Color` less verbose
## [Version 5.0.0](https://github.com/trishume/syntect/compare/v4.6.0...v5.0.0) (2022-05-03)
Breaking changes
- Lazy-load syntaxes to significantly improve startup time. This changes the binary format of syntax dump files.
- Remove `ContextId::new()` from public API to support lazy-loading of syntaxes
- Rename `HighlightLines::highlight()` to `HighlightLines::highlight_line()` to make it clear that the function takes one line at a time
- Make `plist` dependency (used for loading themes) optional via new `plist-load` feature
- Remove obsolete `dump-load-rs` and `dump-create-rs` features that has been identical to `dump-load` and `dump-create` for two years
- Remove deprecated items `ThemeSettings::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`
- Mark all error enums as `#[non_exhaustive]`
- These functions have been changed to return a `Result` to allow propagation of errors:
- `html::ClassedHTMLGenerator::parse_html_for_line_which_includes_newline`
- `html::append_highlighted_html_for_styled_line`
- `html::css_for_theme_with_class_style`
- `html::highlighted_html_for_string`
- `html::line_tokens_to_classed_spans`
- `html::styled_line_to_highlighted_html`
- `parsing::ParseState::parse_line`
- `parsing::ScopeStack::apply`
- `parsing::ScopeStack::apply_with_hook`
- `parsing::syntax_definition::Context::match_at`
- `parsing::syntax_definition::ContextReference::id`
- `parsing::syntax_definition::ContextReference::resolve`
Other changes
- Fall back to `Plain Text` if a referenced syntax is missing
- Add support for `hidden_file_extensions` key in syntaxes.
- Implement `Error` and `Display` for all error enums by using `thiserror`
- Replace `lazycell` with `once_cell` to fix crash on lazy initialization
- Add `ScopeRangeIterator`
- Add CI check for Minimum Supported Rust Version. This is currently Rust 1.53.
- Make looking up a syntax by extension use case-insensitive comparison
- Make `from_dump_file()` ~15% faster
- Blend alpha value on converting colors to ANSI color sequences
- Fix sample code in documentation to avoid double newlines
- Fix lots of build warnings and lints
- Add Criterion benchmarks for a whole syntect pipeline and for `from_dump_file()`
## [Version 4.7.1](https://github.com/trishume/syntect/compare/v4.7.0...v4.7.1) (2022-01-03)
This version was yanked from crates.io due to a semver violation issue.
## [Version 4.7.0](https://github.com/trishume/syntect/compare/v4.6.0...v4.7.0) (2021-12-25)
This version was yanked from crates.io due to a semver violation issue.
## [Version 4.6.0](https://github.com/trishume/syntect/compare/v4.5.0...v4.6.0) (2021-08-01)
- Add `html::line_tokens_to_classed_spans` to also take a mutable ScopeStack, deprecate `tokens_to_classed_spans`, to avoid panics and incorrect highlighting.
- Derive Hash for Color and Style
- Add `find_unlinked_contexts` to `SyntaxSet`
- Add `syntaxes` method to `SyntaxSetBuilder`
- Bump `fancy-regex` to v0.7 and `yaml-rust` to v0.4.5
## [Version 4.5.0](https://github.com/trishume/syntect/compare/v4.4.0...v4.5.0) (2020-12-09)
- Added a new function for producing classed HTML which handles newlines correctly and deprecated old one. [#307](https://github.com/trishume/syntect/pull/307)
## [Version 4.4.0](https://github.com/trishume/syntect/compare/v4.3.0...v4.4.0) (2020-08-19)
- Errors are now `Send + Sync + 'static` [#304](https://github.com/trishume/syntect/pull/304)
## [Version 4.3.0](https://github.com/trishume/syntect/compare/v4.2.0...v4.3.0) (2020-08-01)
- Fixes unnecesary dependency of the `html` feature on the `assets` feature. [#300](https://github.com/trishume/syntect/pull/300)
- Adds ability to add prefixes to `html` module CSS class names. [#296](https://github.com/trishume/syntect/pull/296)
## [Version 4.2.0](https://github.com/trishume/syntect/compare/v4.1.1...v4.2.0) (2020-04-20)
- Updates to new versions of `onig` and `plist`. The new `onig` version doesn't require `bindgen` thus making compilation easier. [#293](https://github.com/trishume/syntect/pull/293)
## [Version 4.1.1](https://github.com/trishume/syntect/compare/v4.1.0...v4.1.1) (2020-04-20)
- Properly handle backreferences in included contexts [#288](https://github.com/trishume/syntect/pull/288)
## [Version 4.1.0](https://github.com/trishume/syntect/compare/v4.0.0...v4.1.0) (2020-03-30)
- Make sure errors implement `Send` [#285](https://github.com/trishume/syntect/pull/285)
- Fix errors to not use the deprecated `description()` [#286](https://github.com/trishume/syntect/pull/286)
Thanks @sharkdp for the bug fixes! Bumping second part of semver since `Send` is adding functionality (back).
## [Version 4.0.0](https://github.com/trishume/syntect/compare/v3.3.0...v4.0.0) (2020-03-29)
### Headline feature: pure-Rust `fancy-regex` engine option
Users 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](https://github.com/trishume/syntect/pull/270) for details.
Thanks to @robinst for implementing this!
### Other changes
- Ability to generate CSS for a theme for use with classed HTML generation (won't always be correct) [#274](https://github.com/trishume/syntect/pull/274/files)
- Don't generate empty spans in classed HTML [#276](https://github.com/trishume/syntect/pull/276)
- Miscellaneous dependency bumps and cleanup
### Breaking changes and upgrading
Upgrading should cause no errors for nearly all users. Users using more unusual APIs may have a small amount of tweaking to do.
- If you use `default-features = false` you may need to update your features to choose a regex engine
- A bunch of technically public APIs that I don't know if anyone uses changed due to the regex engine refactor, common uses shouldn't break
## [Version 3.3.0](https://github.com/trishume/syntect/compare/v3.2.1...v3.3.0) (2019-09-22)
> Bug fixes and new utilities
- Fixes multiple bugs
- Add RangedHighlightIterator
- Add `as_latex_escaped` util
## [Version 3.2.1](https://github.com/trishume/syntect/compare/v3.2.0...v3.2.1) (2019-08-10)
- Bump onig dependency
- inconsequential patches
## [Version 3.2.0](https://github.com/trishume/syntect/compare/v3.1.0...v3.2.0) (2019-03-09)
- Actually make `tokens_to_classed_spans` public like intended
## [Version 3.1.0](https://github.com/trishume/syntect/compare/v3.0.2...v3.1.0) (2019-02-24)
> Metadata and new classed HTML generation
- Add support for loading metadata ([#223](https://github.com/trishume/syntect/pull/223) [#225](https://github.com/trishume/syntect/pull/225) [#230](https://github.com/trishume/syntect/pull/230))
- Improve support for generating classed HTML and fix a bug, old function is deprecated because it's impossible to use correctly ([#235](https://github.com/trishume/syntect/pull/235))
- Update `plist` to `v0.4` and `pretty_assertions` to `v0.6` ([#232](https://github.com/trishume/syntect/pull/232) [#236](https://github.com/trishume/syntect/pull/236))
## [Version 3.0.2](https://github.com/trishume/syntect/compare/v3.0.1...v3.0.2) (2018-11-11)
> Bug fixes
- Fix application of multiple `with_prototype`s ([#220](https://github.com/trishume/syntect/pull/220), fixes [#160](https://github.com/trishume/syntect/issues/160), [#178](https://github.com/trishume/syntect/issues/178), ASP highlighting)
- Fix prototype marking logic ([#221](https://github.com/trishume/syntect/pull/221), fixes [#219](https://github.com/trishume/syntect/issues/219))
## [Version 3.0.1](https://github.com/trishume/syntect/compare/v3.0.0...v3.0.1) (2018-10-16)
> Minor bug fixes
- Fix a bug with syntaxes that used captures in lookarounds ([#176](https://github.com/trishume/syntect/issues/176) [#215](https://github.com/trishume/syntect/pull/215))
- Fix the precedence order of syntaxes to match Sublime ([#217](https://github.com/trishume/syntect/pull/217) [#216](https://github.com/trishume/syntect/pull/216))
## [Version 3.0.0](https://github.com/trishume/syntect/compare/v2.1.0...v3.0.0) (2018-10-09)
> 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.
### Breaking changes and upgrading
- The `SyntaxSet` API has been revamped to use a builder and an arena of contexts. See [example usage](https://github.com/trishume/syntect/blob/51208d35a6d98c07468fbe044d5c6f37eb129205/examples/gendata.rs#L25-L28).
- Many functions now need to be passed the `SyntaxSet` that goes with the rest of their arguments because of this new arena.
- Filename added to `LoadingError::ParseSyntax`
- Many functions in the `html` module now take the `newlines` version of syntaxes.
- These methods have also been renamed, partially so that code that needs updating doesn't break without a compile error.
- The HTML they output also treats newlines slightly differently and I think more correctly but uglier when you look at the HTML.
#### Breaking rename upgrade guide
- `SyntaxSet::add_syntax -> SyntaxSetBuilder::add`
- `SyntaxSet::load_syntaxes -> SyntaxSetBuilder::add_from_folder`
- `SyntaxSet::load_plain_text_syntax -> SyntaxSetBuilder::add_plain_text_syntax`
- `html::highlighted_snippet_for_string -> html::highlighted_html_for_string`: also change to `newlines` `SyntaxSet`
- `html::highlighted_snippet_for_file -> html::highlighted_html_for_file`: also change to `newlines` `SyntaxSet`
- `html::styles_to_coloured_html -> html::styled_line_to_highlighted_html`: also change to `newlines` `SyntaxSet`
- `html::start_coloured_html_snippet -> html::start_highlighted_html_snippet`: return type also changed
### Major changes and new features
- Use arena for contexts ([#182](https://github.com/trishume/syntect/pull/182) [#186](https://github.com/trishume/syntect/pull/186) [#187](https://github.com/trishume/syntect/pull/187) [#190](https://github.com/trishume/syntect/pull/190) [#195](https://github.com/trishume/syntect/pull/195)): This makes the code cleaner, enables use of syntaxes from multiple threads, and prevents accidental misuse.
- This involves a new `SyntaxSetBuilder` API for constructing new `SyntaxSet`s
- See the revamped [parsyncat example](https://github.com/trishume/syntect/blob/51208d35a6d98c07468fbe044d5c6f37eb129205/examples/parsyncat.rs).
- Encourage use of newlines ([#197](https://github.com/trishume/syntect/pull/197) [#207](https://github.com/trishume/syntect/pull/207) [#196](https://github.com/trishume/syntect/issues/196)): The `nonewlines` mode is often buggy so we made it easier to use the `newlines` mode.
- Added a `LinesWithEndings` utility for iterating over the lines of a string with `\n` characters.
- Reengineer the `html` module to use `newlines` syntaxes.
- Add helpers for modifying highlighted lines ([#198](https://github.com/trishume/syntect/pull/198)): For use cases like highlighting a piece of text in a blog code snippet or debugger. This allows you to reach into the highlighted spans and add styles.
- Check out `split_at` and `modify_range` in the `util` module.
- New `ThemeSet::add_from_folder` function ([#200](https://github.com/trishume/syntect/pull/200)): For modifying existing theme sets.
### Bug Fixes
- Improve nonewlines regex rewriting: [#212](https://github.com/trishume/syntect/pull/212) [#211](https://github.com/trishume/syntect/issues/211)
- Reengineer theme application to match Sublime: [#209](https://github.com/trishume/syntect/pull/209)
- Also mark contexts referenced by name as "no prototype" (same as ST): [#180](https://github.com/trishume/syntect/pull/180)
- keep with_prototype when switching contexts with `set`: [#177](https://github.com/trishume/syntect/pull/177) [#166](https://github.com/trishume/syntect/pull/166)
- Fix unused import warning: [#174](https://github.com/trishume/syntect/pull/174)
- Ignore trailing dots in selectors: [#173](https://github.com/trishume/syntect/pull/173)
- Fix `embed` to not include prototypes: [#172](https://github.com/trishume/syntect/pull/172) [#160](https://github.com/trishume/syntect/issues/160)
### Upgraded dependencies
- plist: `0.2 -> 0.3`
- regex: `0.2 -> 1.0`
- onig: `3.2.1 -> 4.1`
## [Version 2.1.0](https://github.com/trishume/syntect/compare/v2.0.1...v2.1.0) (2018-05-31)
> Regex checking and plain file names
* Check regexes compile upon loading from YAML (There's technically a small breaking change here if you match on the previously unused regex error, but I don't think anyone does)
* Can detect the correct syntax on full file names like `CMakeLists.txt`
* Make `nonewlines` mode marginally less buggy (still prefer using `newlines` mode)
* Better error types
* Better examples and tests
## [Version 2.0.1](https://github.com/trishume/syntect/compare/v2.0.0...v2.0.1) (2018-04-28)
> More robust parsing
* Parsing now abandons a regex after reaching a recursion depth limit instead of taking forever
* Loop detection better matches Sublime Text
* Parsing is faster!
* Dependency upgrades
* Other minor tweaks
Thanks to [@robinst](https://github.com/ronbinst) for the headline features of this release!
## [Version 2.0.0](https://github.com/trishume/syntect/compare/v1.8.2...v2.0.0) (2018-01-02)
> Breaking Changes and New Stuff
### Breaking changes
* The `static-onig` feature was removed, static linking is now the default
* Font styles and color constants now use associated consts because of bitflags upgrade
* `SyntaxDefinition::load_from_str` now has an extra parameter
### Other notable changes
* Support for new `embed` syntax, see [#124](https://github.com/trishume/syntect/issues/124)
* Updates to many dependencies
* Updated dumps
* More compact HTML output
## [Version 1.8.2](https://github.com/trishume/syntect/compare/v1.8.0...v1.8.2) (2017-11-11)
> New Inspired GitHub and libonig
## [Version 1.8.0](https://github.com/trishume/syntect/compare/v1.7.3...v1.8.0) (2017-10-14)
> 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.
## [Version 1.7.3](https://github.com/trishume/syntect/compare/v1.7.2...v1.7.3) (2017-09-15)
> Enable comparison of parse states
Fixes comparisons of parse states so they are fast and don't recurse infinitely. Thanks [@raphlinus](https://github.com/raphlinus)
## [Version 1.7.2](https://github.com/trishume/syntect/compare/v1.7.0...v1.7.2) (2017-09-05)
> Bug fixes and package updates
* Fixes [#101](https://github.com/trishume/syntect/issues/101), which caused some syntaxes like PHP to behave incorrectly.
* Updates Packages with new syntax versions
* Adds new handy flags to the `syncat` example
## [Version 1.7.0](https://github.com/trishume/syntect/compare/v1.6.0...v1.7.0) (2017-06-30)
> Pure Rust dump loading / creation features
## [Version 1.6.0](https://github.com/trishume/syntect/compare/v1.5.0...v1.6.0) (2017-06-21)
> Helper methods and more theme attributes
## [Version 1.5.0](https://github.com/trishume/syntect/compare/v1.4.0...v1.5.0) (2017-05-31)
> Highlighting stacks
Small release, adds a convenience method for highlighting an entire stack, and derives some more things on `Scope`.
## [Version 1.4.0](https://github.com/trishume/syntect/compare/v1.3.0...v1.4.0) (2017-05-25)
> 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.
## [Version 1.3.0](https://github.com/trishume/syntect/tree/v1.3.0) (2017-04-05)
> Bug fixes, tests, updates and feature flags
* Syntax tests: there is a new `syntest` example for running Sublime Text syntax tests
* Bug fixes: there's a ton of bugs fixed in this release, mostly found via the syntax tests. These mostly affected certain syntaxes which pushed/set multiple contexts at once.
* Updated packages: The Sublime packages have been updated to the latest version
* Feature flags: there's now Cargo feature flags for disabling some parts of syntect if you don't want unnecessary binary and dependency bloat.