-
Notifications
You must be signed in to change notification settings - Fork 333
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add changelog entry for ppxlib.0.32.0 release (#2036)
Signed-off-by: Nathan Rebours <[email protected]>
- Loading branch information
Showing
1 changed file
with
49 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
--- | ||
title: Ppxlib 0.32.0 | ||
tags: [ppxlib, platform] | ||
changelod: | | ||
- Add an optional `embed_errors` argument to `Context_free.map_top_down` that | ||
controls how to deal with exceptions thrown by context-free rules. | ||
(#468, @NathanReb) | ||
- Fix `Longident.parse` so it properly handles unparenthesized dotted operators | ||
such as `+.` or `*.`. (#111, @rgrinberg, @NathanReb) | ||
- raising an exception does no longer cancel the whole context free phase(#453, @burnleydev1) | ||
- Sort embedded errors that are appended to the AST by location so the compiler | ||
reports the one closer to the beginning of the file first. (#463, @NathanReb) | ||
- Update `Attribute.get` to ignore `loc_ghost`. (#460, @ceastlund) | ||
- Add API to manipulate attributes that are used as flags (#408, @dianaoigo) | ||
- Update changelog to use ISO 8061 date format: YYYY-MM-DD. (#445, @ceastlund) | ||
- Replace `Caml` with `Stdlib`. (#427, @ceastlund) | ||
- When a transformation raises, the last valid AST is used as input to the upcoming | ||
transformations. All such errors are collected and appended as | ||
extension nodes to the final AST (#447, @burnleydev1) | ||
- Fix a small mistake in the man pages: Embededding errors is done by default with | ||
`-as-pp`, not with `-dump-ast` (#464, @pitag-ha) | ||
- Set appropriate binary mode when writing to `stdout` especially for Windows | ||
compatibility. (#466, @jonahbeckford) | ||
--- | ||
|
||
The ppxlib dev team is happy to announce the release of ppxlib.0.32.0. | ||
|
||
The main feature of this release, implemented by @burnleydev1 during their Outreachy internship, is a huge improvement of the handling of located exceptions raised by ppx-es. Whenever a rewrite of the AST throws such an exception, the ppxlib driver catches it and resumes the rewriting using the latest valid AST it knows of. All caught exceptions are appended to the final AST as `[%%ocaml.error ..]` nodes. This means the driver returns a valid AST instead of one composed of a single error node corresponding to the first raised exception. | ||
This leads to a much better experience for ppx users as merlin now has a valid AST to work with when this happens, allowing it to properly function, reporting all errors, from ppx-es or otherwise. | ||
Note that despite this change we still recommend ppx authors to embed errors in the rewritten AST rather than throw exceptions. | ||
|
||
The release also comes with a few bug fixes on longident parsing or windows compatibility and a new simplified API for ppx authors using attributes as flags (i.e. attributes without payloads such as `[@ignore]` for instance). | ||
|
||
We'd like to thank our external contributors for this release: | ||
- @burnleydev1 for their improvement of the driver exception handling | ||
- @dianaoigo for their addition of the new attribute flags API | ||
- @jonahbeckford for their fix of the windows compatibility | ||
|
||
We'd also like to thank the OCaml Software Foundation who has been funding my work on this release. |