Skip to content

v1.8.2

Choose a tag to compare

@github-actions github-actions released this 26 Oct 12:02
· 1509 commits to main since this release
  • GH-1571: Remove trimming inside individual chunks.

    Trimming Chunks (always from the left) causes a lot of internal work with only limited benefit since we manage visibility with stream::Views on top of Chunks anyway.

    This patch removes trimming inside Chunks so now any trimming only removes Chunks from Chains, but does not internally change individual Chunks anymore. This might lead to slightly increased memory use, but callers usually have that data in memory anyway.

  • GH-1549: GH-1554: Fix potential infinite loop when trimming data before stream.

    Previously we would trigger an infinite loop if one tried to trim before the head chunk of a stream. In praxis this seem to have been no issue due to #1549 and us emitting way less calls to trim than possible.

    This patch adds an explicit check whether we need to trim anything, and exits the low-level function early for such cases.

  • GH-1550: Replace recursive deletion with explicit loop to avoid stack overflow.

  • GH-1549: Add feature guards to accesses of a unit's __position.

    Access of __position triggers a random access functionality. In order to distinguish our internal uses from accesses due to user code, most access in our generated code should be guarded with a feature constant (if or ternary).

    In this patch add proper guards for a couple instances where we did not do that correctly. That mishap caused all units with containers to be random access (even the root unit) which in turn could have lead to e.g., unbounded memory growth, or runtime overhead due to generation and execution of unneeded code, or expensive cleanup on very large untrimmed inputs.

  • Artificially limit the number of open files.

    This works around a silent failure in reproc where it would refuse to run on systems which huge rlimits for the number of open files. We have seen this hit on huge production boxes.

  • GH-1478: Add regression test for #1478.

  • Add begin to parser state.

    This patch adds the current begin position to the parser state, and makes the corresponding changes to generated parser functions so it is passed down.

    We already modelled the semantic beginning of the input in the unit, but had no reliable way to keep this up-to-date across non-unit contexts like &parse-from. This would then for certain setups lead to generated code where input and position would point to different inputs which in turn caused offset (modelled as position - input) to be incorrect.

  • Expand validator error message.

  • Disable a few newer clang-tidy categories.

    The options disabled here and triggered in newer versions of clang-tidy.

  • Drop -noall_load linker option.

    We added this linker option on macos. This option was already obsolete, e.g., in the ld manpage:

    -noall_load
            This is the default.  This option is obsolete.
    

    Newer versions of xcode do not know this option anymore and instead generate a hard error.

  • Declare Spicy pygments extension as parallel-safe.

    We previously would not declare that the Spicy pygments highlighter is safe to execute in parallel (reading or writing of sources). Sphinx then assumed that the extension was not safe to run in parallel and instead ran jobs sequentially.

    This patch declares the extension as able to execute in parallel. Since the extension does not manage any external state this is safe.

  • Use find_package(Python) with version.

    Zeek's configure sets Python_EXECUTABLE has hint, but Spicy is using find_package(Python3) and would only use Python3_EXECUTABLE as hint. This results in Spicy finding a different (the default) Python executable when configuring Zeek with --with-python=/opt/custom/bin/python3.

    Switch Spicy over to use find_package(Python) and add the minimum version so it knows to look for Python3.