Skip to content

Commit

Permalink
Add changelog entry for ppxlib.0.32.0 release (#2036)
Browse files Browse the repository at this point in the history
Signed-off-by: Nathan Rebours <[email protected]>
  • Loading branch information
NathanReb authored Feb 8, 2024
1 parent bc7d672 commit a00154f
Showing 1 changed file with 49 additions and 0 deletions.
49 changes: 49 additions & 0 deletions data/changelog/ppxlib/2024-02-05-ppxlib-0.32.0.md
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.

0 comments on commit a00154f

Please sign in to comment.