Skip to content

Releases: gedaiu/fluent-asserts

v2.0.0-beta.6

02 Feb 08:38
856eb2a

Choose a tag to compare

fix: Const/immutable bool string conversion

v2.0.0-beta.5

04 Jan 00:44

Choose a tag to compare

1. Improved Diff Output

  • Line-based diff algorithm - Uses LCS (Longest Common Subsequence) instead of naive positional comparison
  • Block grouping - Consecutive insertions/deletions are grouped together
  • Context lines - Shows 2 lines before/after each change block
  • Clear labels - Added --- Expected (missing in actual) --- and +++ Actual (not in expected) +++ headers
  • Visual separators - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ between change blocks
  • Fixed stray period - No longer adds . on its own line after multiline diffs

2. AssertResult Improvements

  • Added copy constructors and assignment operators for better object management

3. Documentation & Refactoring

  • Updated README with extension library usage
  • Enhanced extending guide with examples
  • Simplified import structure in asserts.d
  • Enhanced value evaluation logic

4. Registry Operations

  • Import Registry operations for enhanced functionality

v2.0.0-beta.4

30 Dec 01:21

Choose a tag to compare

  • Add a precision parameter to toFloatingString for configurable decimal places

v2.0.0-beta.3

30 Dec 00:09

Choose a tag to compare

  • update serializer registry to accept list types

v2.0.0-beta.2

27 Dec 01:18

Choose a tag to compare

  • fix compiler error while using the project as dependency

v2.0.0-beta.1

25 Dec 15:18
8c99b2d

Choose a tag to compare

fluent-asserts v2.0.0-beta.1

Highlights

Complete engine rewrite - v2.0 is a ground-up rewrite focused on performance, @nogc compatibility, and better developer experience. The public API remains familiar while the internals are now faster and lighter.

New Features

  • @nogc support - Use fluent-asserts in @nogc contexts
  • Output formats - Choose between verbose, compact (for AI tools), or TAP (for CI/CD)
  • Context data - Debug loops with .withContext("key", value) and because("msg %s", i)
  • Memory assertions - Test GC behavior with .allocateGCMemory() and .allocateNonGCMemory()
  • Assertion statistics - Track pass/fail counts via Lifecycle.instance.statistics
  • Recording evaluations - Capture assertion results with .recordEvaluation() without throwing
  • Custom failure handlers - Install your own handler with setFailureHandler()
  • Release build no-op - Zero overhead in release builds (like D's built-in assert)

Performance Improvements

  • Lazy source parsing - Source code only parsed on assertion failure
  • Small Buffer Optimization - Short strings avoid heap allocation entirely
  • Reference-counted memory - Manual memory management replaces GC allocations

Breaking Changes

  • Module paths changed - Internal modules moved (e.g., fluentasserts.core.operations.*fluentasserts.operations.*)
  • Serializer registry renamed - Use HeapSerializerRegistry instead of SerializerRegistry
  • Operation signatures changed - Operations now modify Evaluation struct directly
  • Evaluation is now a struct - Previously a class

Migration

Most users importing fluent.asserts or fluentasserts.core.base need no changes. See the Upgrading Guide for details.

v1.0.1

19 Jun 13:41
3b21cac

Choose a tag to compare

  • Fix Compilation Errors with DMD v2.104.0 onward

v1.0.0

18 Nov 08:21

Choose a tag to compare

don't convert to array objects that are both arrays and hash maps

v1.0.0-beta.2

24 Aug 15:03

Choose a tag to compare

v1.0.0-beta.2 Pre-release
Pre-release
  • don't convert to array objects that ar both lists and hash maps

v1.0.0-beta.1

12 Aug 13:08

Choose a tag to compare

v1.0.0-beta.1 Pre-release
Pre-release
  • update docs and prepare the v1 release