Skip to content

Releases: riversideresearch/hammer

MicroHammer v2.0.1

17 Apr 18:09
b1508af

Choose a tag to compare

This release hardens public API input validation and removes integer-truncation bugs that could cause silent misbehavior in release builds.

Added

  • HAMMER_ASSERT macro in internal.h: unconditional abort for programmer errors that survives -DNDEBUG, unlike assert()

Changed

  • h_assert_type macro updated to use HAMMER_ASSERT, aborting on type mismatch in all builds
  • test_token_len_assert updated to verify that tokens longer than 255 bytes are now accepted and parse correctly end-to-end
  • CI pipeline extended with ruff linting of Python and SCons files, gating the build-deb step

Fixed

  • HToken.len and bits_env.length widened from uint8_t to size_t, resolving silent integer truncation for tokens and bit counts above 255. h_bits(264, false) no longer silently behaves as h_bits(8, false) (#3)
  • assert()-based programmer-error guards replaced with HAMMER_ASSERT across bitwriter.c, glue.c, glue.h, datastructures.c; runtime boundary conditions retain explicit safe returns (#6)

MicroHammer v2.0.0

06 Apr 20:01
83143ac

Choose a tag to compare

This release reintroduces multi-language bindings, bringing Python, Java, and C++ support back to the library alongside testing and build infrastructure improvements.

Added

  • Python bindings via SWIG with a setup.py-based build and unittest smoke tests
  • Java/JNI bindings via SWIG with a hammer.jar package and standalone smoke tests
  • Header-only C++ wrapper (hammer.hpp) with gtest-based tests and assertion helpers (hammer_test.hpp)
  • tools/test_reporter.py to label per-binding test output and aggregate pass/fail counts into a final summary table
  • scons bindings=<python,java,cpp> option to build and test individual language bindings
  • Per-binding installpython, installjava, and installcpp SCons targets

Changed

  • scons test now runs core tests followed by any enabled binding tests, with a combined results summary
  • CI pipeline extended with dependency installation and a dedicated binding test step
  • Updated org/package namespace from upstandinghackers to riversideresearch throughout

Fixed

  • ParseResult made move-only to prevent double-free on copy
  • Python SWIG typemap for void*[] now frees the allocated parser array after each call
  • Python SWIG uint8_t typemap validates single-byte length before dereferencing

MicroHammer v1.1.2

31 Mar 20:34
a1b7f49

Choose a tag to compare

This release is a patch fix a bug with token length truncation.

Changed

  • Document change to prevent confusion over magic number.
  • Add test to check that truncation bug is not possible.

Fixed

  • Fix token length truncation bug from Issue #3

MicroHammer v1.1.1

11 Mar 17:59
3873ed2

Choose a tag to compare

This release is a patch update addressing a build bug, improving install/uninstall support, and adding a CI pipeline.

Added

  • scons uninstall target to remove all files placed by scons install
  • variant=microhammer field to libhammer.pc for identifying the installed variant via pkg-config
  • GitHub Actions CI pipeline for formatting checks, tests, and .deb builds on pull requests

Changed

  • Installed .so files no longer carry a version suffix (libhammer.so instead of libhammer.so.1.1.x)
  • Improved h_in and h_not_in documentation to clarify cursor and byte consumption behavior

Fixed

  • Crashing scons test caused by misaligned backend names array in benchmark.c after non-packrat backends were pruned

MicroHammer v1.1.0

23 Feb 15:19

Choose a tag to compare

This release focuses on testing, coverage, and project structure cleanup in order to lay a solid foundation for future development.

Added

  • Comprehensive test coverage for parsers, backends, allocators, and the core library
  • Code coverage support using lcov / gcov
  • New --coverage build flag for generating coverage reports
  • Test coverage documentation in DEVELOPMENT.md

Changed

  • Major testing infrastructure overhaul
  • Reorganized test suite: tests moved from src/ to tests/
  • Parser tests split into focused files under tests/parsers/
  • Build artifacts are now generated in the build/ directory

Removed

  • Removed deprecated params backend

Quality

  • Achieved ~100% line coverage for parsers and top-level source files

MicroHammer v1.0.0

04 Nov 18:06

Choose a tag to compare

This is the first release of MicroHammer, a slimmed-down version of the Hammer parsing library.

This version removes:

  • non-packrat backends
  • all language bindings
  • Windows / macOS support
  • Makefile build system
  • other extra or non-essential files

The goal is to provide a lightweight, Linux-focused version of Hammer with a minimal, clean codebase.

Added / Improved

  • improved documentation (consistent Doxygen comments for public API)
  • code style consistency (linting + formatting)
  • Debian packaging / build support