diff --git a/CHANGES b/CHANGES index df1c6fc47..cbb066859 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,7 @@ +1.8.0 | 2023-06-14 08:53:34 +0200 + + * Release 1.8.0. + 1.8.0-dev.176 | 2023-06-14 08:52:14 +0200 * Update Zeek docs for Zeek 6.0. (Robin Sommer, Corelight) @@ -247,7 +251,7 @@ * Implement `View::data` with `Bytes::append`. (Benjamin Bannier, Corelight) - * GH-7: Avoid unneeded temporaries when appending `View` to `Bytes`. (Benjamin Bannier, Corelight) + * Avoid unneeded temporaries when appending `View` to `Bytes`. (Benjamin Bannier, Corelight) We used `View::data` to constructs a new `Bytes` to append from. Since we cannot reuse the temporary in the append but have to copy the data diff --git a/NEWS.rst b/NEWS.rst index 2999bd61e..5c57d36cf 100644 --- a/NEWS.rst +++ b/NEWS.rst @@ -2,17 +2,87 @@ This following summarizes the most important changes in recent Spicy releases. For an exhaustive list of all changes, see the :repo:`CHANGES` file coming with the distribution. -Version 1.8 (in progress) -========================= +Version 1.8 +=========== .. rubric:: New Functionality +- Add new ``skip`` keyword to let unit items efficiently skip over uninteresting data. + + For cases where your parser just needs to skip over some data, without + needing access to its content, Spicy provides a ``skip`` keyword to + prefix corresponding fields with: + + .. spicy-code:: skip.spicy + + module Test; + + public type Foo = unit { + x: int8; + : skip bytes &size=5; + y: int8; + on %done { print self; } + }; + + ``skip`` works for all kinds of fields but is particularly efficient + with ``bytes`` fields, for which it will generate optimized code + avoiding the overhead of storing any data. + + ``skip`` fields may have conditions and hooks attached, like + any other fields. However, they do not support ``$$`` in + expressions and hooks. + + For readability, a ``skip`` field may be named (e.g., ``padding: skip + bytes &size=3;``), but even with a name, its value cannot be accessed. + + ``skip`` fields extend support for ``void`` with attributes fields which are now deprecated. + +- Add runtime profiling infrastructure. + + This add an option ``--enable-profiling`` to the HILTI and Spicy compilers. Use + of the option does two things: (1) it sets a flag enabling inserting + additional profiling instrumentation into generated C++ code, and (2) it + enables using instrumentation for recording profiling information during + execution of the compiled code, including dumping out a profiling report at + the end. The profiling information collected includes time spent in HILTI + functions as well as for parsing Spicy units and unit fields. + .. rubric:: Changed Functionality +- Optimizations for improved runtime performance. + + This release contains a number of changes to improve the runtime performance + of generated parsers. This includes tweaks for generating more performant + code for parsers, low-level optimizations of types in to runtime support + library as well as fine-tuning of parser execution at runtime. + + +- Do not force locale on users of libhilti. +- Avoid expensive checked iterator for internal ``Bytes`` iteration. +- GH-1089: Allow to use ``offset()`` without enabling full random-access support. +- GH-1394: Fix C++ normalization of generated enum values. +- Disallow using ``$$`` with anonymous containers. + .. rubric:: Bug fixes +- GH-1386: Prevent internal error when passed invalid context. +- Fix potential use-after-move bug. +- GH-1390: Initialize ``Bytes`` internal control block for all constructors. +- GH-1396: Fix regex performance regression introduced by constant folding. +- GH-1399: Guard access to unit ``_filters`` member with feature flag. +- GH-1421: Store numerical offset in units instead of iterator for position. +- GH-1436: Make sure ``Bytes::sub`` only throws HILTI exceptions. +- GH-1447: Do not forcibly make ``strong_ref`` ``in`` function parameters immutable. +- GH-1452: Allow resolving of unit parameters before ``self`` is fully resolved. +- Make sure Spicy runtime config is initialized after ``spicy::rt::init``. +- Adjustments for building with GCC-13. + .. rubric:: Documentation +- Document how to check whether an ``optional`` value is set. +- Preserve indention when extracting comments in doc generation. +- Fix docs for long-form of ``-x`` flag to spicyc. + Version 1.7 =========== diff --git a/VERSION b/VERSION index 66a86ab6e..27f9cd322 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.8.0-dev.176 +1.8.0 diff --git a/doc/conf.py b/doc/conf.py index 36798fa26..6b8914857 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -27,7 +27,7 @@ author = u'Zeek Project' version = open('../VERSION').readline() -release = "1.7.0" # most recent release version +release = "1.8.0" # most recent release version # -- General configuration ---------------------------------------------------