Skip to content

Commit 70fe8a5

Browse files
cut 0.8.22 version
1 parent 7a21b8b commit 70fe8a5

File tree

2 files changed

+62
-1
lines changed

2 files changed

+62
-1
lines changed

CHANGES.txt

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,64 @@
1+
0.8.22 - 2024-12-31
2+
3+
- Removed many warnings on both gcc, clang and msvc.
4+
5+
- Fixed problems with variables that were not generated in parser-only
6+
situations.
7+
8+
- Fixed internal self-use of Carburetta, where %on_alloc_error and
9+
%on_internal_error assumed that user-defined parameters were available,
10+
this is not the case when called from cleanup.
11+
12+
- Regenerate Carburetta self-use code. Resolve some issues with
13+
Carburetta's own use of itself (ouroboros) - you wouldn't ordinarily
14+
run into these because Carburetta has its own self-generated code checked
15+
in to prevent the bootstrap problem.
16+
17+
- Carburetta internal issues due to not correctly passing the match and
18+
variant of tokens.
19+
20+
- Many issues where %move semantics inside Carburetta did not clear
21+
source pointers to NULL causing destruction to be called twice. There
22+
is a more permanent solution for this below.
23+
24+
- New %move semantics, when a %type does not have an explicit %move, then
25+
we no longer destruct the source data, but assume that the source is
26+
destructed when the copy is destructed. So, for instance, suppose we
27+
have %type char*, a malloc'ed string, then previously, you needed to
28+
add an explicit %move that cleared the source to prevent the destructor
29+
on the source from free'ing the pointer that was copied over.
30+
The new behavior is that, when relying on the default %move (a memcpy),
31+
the source is no longer destructed. This is very likely what users
32+
would expect and reduces the need for %move directives on everything.
33+
C++ %class types are not affected as these always generate a default
34+
and valid C++ style %move with appropriate destruction semantics.
35+
36+
- Substantial updates to the Tilly example. Tilly is a tiling engine
37+
that is useful for generating machine code from expression trees.
38+
The Tilly example is a work in progress, it implements the algorithm
39+
from the 1989 paper: "Code Generation Using Tree Matching and Dynamic
40+
Programming" by Alfred V. Aho, Mahadevan Ganapathi and Steven W.K. Tjiang.
41+
The Tilly example is a good example of how to use Carburetta to implement
42+
a more complex multi-stage parser.
43+
It continues to be a work in progress and needs more documentation.
44+
45+
- t16 and t17 test the new %move semantics for %type scenarios.
46+
47+
- Addition of %on_scan_token and $set_token(token-id) for scanner.
48+
The snippet for %on_scan_token is inserted in the scan function when a new
49+
token is needed. The snippet can chose to do nothing (in which case the lexer
50+
will execute on the input and determine a new token), or it can insert a
51+
token in the stream using $set_token(token-id); the token-id must be a
52+
terminal, and no data can be set for the terminal (so the terminal should not
53+
have any associated type.)
54+
%on_next_token is now only generated for parsers.
55+
56+
- Since the previous release, there is now a new example in the form of Aex-GL.
57+
Aex-GL is a portable OpenGL ES 2.0 software implementation in C, using Carburetta
58+
to parse the GLSL ES 1.0 shader language. You can find the Aex-GL example in the
59+
github repository at https://github.com/kingletbv/aex-gl
60+
61+
162
0.8.20 - 2023-09-14
263

364
- For std::move generated code, don't rely on #include <type_traits> but

src/version.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ extern "C" {
2222

2323
#define CARBURETTA_MAJOR_VER 0
2424
#define CARBURETTA_MINOR_VER 8
25-
#define CARBURETTA_PATCH_VER 21
25+
#define CARBURETTA_PATCH_VER 22
2626

2727
#define CARBURETTA_STRINGIFY_i(x) #x
2828
#define CARBURETTA_STRINGIFY(x) CARBURETTA_STRINGIFY_i(x)

0 commit comments

Comments
 (0)