Skip to content

Commit 63594ca

Browse files
committed
Update CHANGES.
1 parent 3310bf4 commit 63594ca

File tree

5 files changed

+165
-3
lines changed

5 files changed

+165
-3
lines changed

CHANGES

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
1.14.0 | 2025-08-14 16:34:53 +0200
2+
3+
* Release 1.14.0.
4+
15
1.14.0-dev.214 | 2025-08-13 16:33:42 +0200
26

37
* Bump pre-commit hooks. (Benjamin Bannier, Corelight)

NEWS.rst

Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,170 @@ Version 1.14 (in progress)
77

88
.. rubric:: New Functionality
99

10+
- GH-2028: New interprocedural optimizations.
11+
12+
We added infrastructure for performing interprocedural optimizations, and as
13+
a first user added a pass which removes unused function parameters in
14+
GH-2030. While this works on any code it is mainly intended to simply
15+
generated parser code for better runtime performance.
16+
17+
- GH-1697: Remove some dead statements based on control and data flow.
18+
19+
We now collect control and data flow information. We use this to detect and
20+
remove "dead statements", i.e., statements which are not seen by any other
21+
needed computations. Currently we handle two classes of dead statements:
22+
23+
- assignments which are override before being used
24+
- unreachable code, e.g., due to preceding ``return``, ``break`` or ``throw``
25+
26+
The implementation for this is still not able to cover all possible Spicy
27+
language constructs, so it is behind a feature flag and not enabled by
28+
default. To enable it one needs to set the environment variable
29+
``HILTI_OPTIMIZER_ENABLE_CFG=1`` when compiling Spicy code with e.g., ``spicyc``.
30+
31+
We encourage users to test this compilation mode and if possible use the
32+
compiled parsers in production. If parsers compiled this way show the
33+
intended runtime behavior in tests they should also be fine to use in
34+
production.
35+
1036
.. rubric:: Changed Functionality
1137

38+
- GH-2050: Prefer stdout over stderr for ``--help`` messages.
39+
40+
Spicy tools now emit ``--help`` output to stdout instead of ``stderr``.
41+
42+
- GH-2068: Allow disabling building of tests.
43+
44+
We added a new CMake option ``SPICY_ENABLE_TESTS`` which if toggled on forces
45+
building of test and benchmark binaries; it is ``ON`` by default. This flag
46+
can be used by projects building Spicy to disable building of tests if they
47+
are not interested in them. We also provide a configure flag
48+
``--disable-tests`` which has has the effect of turning it off.
49+
50+
- GH-1663: Speed up checking of iterator compatibility.
51+
52+
We were previously using a control block which held a ``weak_ptr`` to the
53+
protected data. This was pretty inefficient for a number of reasons:
54+
55+
- access to the controlled data always required a ``weak_ptr::lock`` which
56+
created a temporary ``shared_ptr`` copy and immediately destroyed it after
57+
access
58+
- to check whether the control block was expired we used ``lock`` instead
59+
of ``expired`` which introduced the same overhead
60+
- to check compatibility of iterators we compared ``shared_ptrs`` to the
61+
control data which again required full locks instead of using
62+
``owner_before``
63+
64+
This manifested in e.g., loops often being less performant than possible. We
65+
now changed how we hold data to make iterating collections cheaper.
66+
67+
- GH-2086: Fix scope resolution of local variables.
68+
69+
If usage of a local comes before its declaration, we now no longer
70+
resolve that usage to this local. It'll either be resolved to an
71+
upper layer ID (if there is one of the same name), or rejected if it's
72+
otherwise unknown.
73+
74+
- GH-2066: When C++ compilation fails, ask user for help.
75+
76+
We do expect C++ code generated by Spicy to be valid, so C++ compiler errors
77+
in generated code are likely bugs. We now record the output of the C++
78+
compiler in a dedicated file ``hilti-jit-error.log`` and ask users to file a
79+
ticket in case C++ compilation failed.
80+
81+
- GH-1660: When printing anonymous bitfields inside a struct, lift up the fields.
82+
83+
This now prints, e.g., ``[$fin=1, $rsv=0, $opcode=2, $remaining=255]``
84+
instead of ``[$<anon>=(1, 0, 2, 255)]``.
85+
86+
In addition, we also prettify non-anonymous bitfields. They now print
87+
as, e.g., ``[$y=(a: 4, b: 8)]`` instead of ``[$y=(4, 8)]``.
88+
89+
- GH-1085: Allow registering a module twice.
90+
91+
So far, if one compiled the same HILTI module twice, each into its own
92+
HLTO, then when loading the two HLTOs, the runtime system would skip
93+
the second instance. However, that's not really what we want: a module
94+
could intentionally be part of multiple HLTOs, in which case each
95+
should get its own copy of that module state (i.e., its globals).
96+
97+
This change allows the same module to be registered multiple times,
98+
with the HLTO linker scope distinguishing between the instances at
99+
runtime, as usual. To make that work, we move computation of the scope
100+
from compile time to runtime, using the library's absolute path as the
101+
scope.
102+
103+
- GH-1905: Fix operator precedence in Spicy grammar.
104+
105+
We fixed the precedence of a number of operators to be closer to what users
106+
would expect from other language like C++ or Python.
107+
108+
- we reduced the precedence of the ``in`` operator
109+
- pre- and postfix operators ``++`` and ``--`` now have same precedence and are
110+
right associative
111+
- unary negate was change to match the precedence of other unary operators.
112+
113+
- Switch compilation to C++20.
114+
115+
Like Zeek Spicy now requires a C++ compiler. As part of this change we
116+
cleaned up the implementation to take advantage of C++ functionality in a
117+
number of places. We also moved from the external libraries ``linb::any`` to
118+
``std::any``, and ``ghc::filesystem`` to ``std::filesystem``.
119+
120+
- Update supported platforms.
121+
122+
We dropped support for the following platforms:
123+
124+
- debian-11
125+
- fedora-40
126+
127+
We added support for
128+
129+
- debian-13
130+
- fedora-42
131+
132+
- GH-1660: Render all bitfield instances with included field names.
133+
134+
- GH-2099: Fully implement iterator interface for ``set::Iterator``.
135+
136+
- GH-2052: Move calling convention from function to function type.
137+
12138
.. rubric:: Bug fixes
13139

140+
- GH-2057: Fix ``bytes`` iterator dereference operation.
141+
142+
- GH-2065: Error for redefined locals from statement inits.
143+
144+
- GH-2061: Fix cyclic usage of units types inside other types.
145+
146+
- GH-2074: Fix fiber abortion.
147+
148+
- GH-2063: Fix C++ compilation issue with weak->strong refs.
149+
150+
- GH-2064: Ensure generated typeinfos are declared before used.
151+
152+
- GH-2044: Catch if methods are implemented multiple times.
153+
154+
- GH-2078: Fix C++ output for constants of constant type.
155+
156+
- GH-1988: Enforce that block-local declarations must be variables.
157+
158+
- GH-1996: Catch exceptions in ``processInput`` gracefully.
159+
160+
- GH-2091: Fix strong->value reference coercion in calls.
161+
162+
- GH-2100: Add missing deref operations for struct try-member/has-member operators.
163+
164+
- GH-2119: Fix missing ``inline`` functions in enum prototypes.
165+
166+
- GH-2142, GH-2134: Complete information exposed for reflection in typeinfo.
167+
168+
- GH-2135: Add ``&cxx-any-as-ptr`` attribute.
169+
14170
.. rubric:: Documentation
15171

172+
- GH-1905: Document operator precedence.
173+
16174
Version 1.13
17175
============
18176

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
<tr>
1919
<td>Build status</td>
2020
<td>
21-
<a href="https://cirrus-ci.com/github/zeek/spicy/release/1.13"><img src="https://api.cirrus-ci.com/github/zeek/spicy.svg?branch=release/1.13" alt="Build status release"></a>
21+
<a href="https://cirrus-ci.com/github/zeek/spicy/release/1.14"><img src="https://api.cirrus-ci.com/github/zeek/spicy.svg?branch=release/1.14" alt="Build status release"></a>
2222
</td>
2323
<td>
2424
<a href="https://cirrus-ci.com/github/zeek/spicy/main"><img src="https://api.cirrus-ci.com/github/zeek/spicy.svg" alt="Build status development"></a>

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.14.0-dev.214
1+
1.14.0

doc/conf.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
author = "Zeek Project"
2626

2727
version = open("../VERSION").readline()
28-
release = "1.13.0" # most recent release version
28+
release = "1.14.0" # most recent release version
2929

3030
# -- General configuration ---------------------------------------------------
3131

0 commit comments

Comments
 (0)