Releases: riversideresearch/hammer
MicroHammer v2.0.1
This release hardens public API input validation and removes integer-truncation bugs that could cause silent misbehavior in release builds.
Added
HAMMER_ASSERTmacro ininternal.h: unconditional abort for programmer errors that survives-DNDEBUG, unlikeassert()
Changed
h_assert_typemacro updated to useHAMMER_ASSERT, aborting on type mismatch in all buildstest_token_len_assertupdated to verify that tokens longer than 255 bytes are now accepted and parse correctly end-to-end- CI pipeline extended with
rufflinting of Python and SCons files, gating thebuild-debstep
Fixed
HToken.lenandbits_env.lengthwidened fromuint8_ttosize_t, resolving silent integer truncation for tokens and bit counts above 255.h_bits(264, false)no longer silently behaves ash_bits(8, false)(#3)assert()-based programmer-error guards replaced withHAMMER_ASSERTacrossbitwriter.c,glue.c,glue.h,datastructures.c; runtime boundary conditions retain explicit safe returns (#6)
MicroHammer v2.0.0
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 andunittestsmoke tests - Java/JNI bindings via SWIG with a
hammer.jarpackage and standalone smoke tests - Header-only C++ wrapper (
hammer.hpp) with gtest-based tests and assertion helpers (hammer_test.hpp) tools/test_reporter.pyto label per-binding test output and aggregate pass/fail counts into a final summary tablescons bindings=<python,java,cpp>option to build and test individual language bindings- Per-binding
installpython,installjava, andinstallcppSCons targets
Changed
scons testnow 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
upstandinghackerstoriversideresearchthroughout
Fixed
ParseResultmade 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_ttypemap validates single-byte length before dereferencing
MicroHammer v1.1.2
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
This release is a patch update addressing a build bug, improving install/uninstall support, and adding a CI pipeline.
Added
scons uninstalltarget to remove all files placed byscons installvariant=microhammerfield tolibhammer.pcfor identifying the installed variant viapkg-config- GitHub Actions CI pipeline for formatting checks, tests, and
.debbuilds on pull requests
Changed
- Installed
.sofiles no longer carry a version suffix (libhammer.soinstead oflibhammer.so.1.1.x) - Improved
h_inandh_not_indocumentation to clarify cursor and byte consumption behavior
Fixed
- Crashing
scons testcaused by misaligned backend names array inbenchmark.cafter non-packrat backends were pruned
MicroHammer v1.1.0
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
--coveragebuild flag for generating coverage reports - Test coverage documentation in
DEVELOPMENT.md
Changed
- Major testing infrastructure overhaul
- Reorganized test suite: tests moved from
src/totests/ - Parser tests split into focused files under
tests/parsers/ - Build artifacts are now generated in the
build/directory
Removed
- Removed deprecated
paramsbackend
Quality
- Achieved ~100% line coverage for parsers and top-level source files
MicroHammer v1.0.0
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