All notable changes to this project will be documented in this file. This change log follows the conventions of keepachangelog.com.
This project does not follow semantic versioning. Instead its versions increment in the following way:
- If the release contains only fixes and/or internal changes, a hotfix version is released
- If the release contains new features in the public api or minor changes which will not affect most users, a minor version is released
- If the release contains a huge number of new features, removes old features, or substantially changes the existing semantics of the library for most users, a major version is released
Any time a segment of the version number increments, all following segments are reset to zero.
1.4.3 - 2022-02-17
- Inconsistencies between internal implementation and specs for those internals
1.4.2 - 2022-02-14
- Error in the function spec for
block*
1.4.1 - 2022-01-31
- Internal jump targets would consume memory as they were constructed, causing a slow memory leak
- Reflection warnings in the default system debugger
- Reflection and performance warnings resulting from the use of
tagbody, handler-case, and restart-case
- The spec on
make-jump-target has been removed. The return value should not be depended on by user code.
1.4.0 - 2021-11-02
- New functions
request-value and request-interaction to enable customizable interactive restarts
- The
block macro previously introduced a recur point, which could cause confusion - Attempting to unwind to a
block no longer on the stack with bound-fn would throw a Signal rather than raising a :farolero.core/control-error - clj-kondo hooks did not identify the correct recur points
1.3.1 - 2021-10-22
- Extension for integration with
fmnoise/flow's protocol
recur forms in the clauses of *-case macros acted unexpectedly by establishing recur points
1.3.0 - 2021-09-01
- Ability to configure the interactive functions for
assert, check-type, and wrap-exceptions
- Default interactive-function changed to return nil in Clojure to bring behavior in line with ClojureScript and the Common Lisp spec
- Sweeping changes to docstrings to improve accuracy
- Internal function
handles-condition? was public - Incorrect specs for handler and restart names not requiring qualified keywords
tagbody was not reentrant
1.2.0 - 2021-06-20
- Macros for unbinding handlers and restarts,
without-handlers, and without-restarts
- Handlers and restarts are no longer always thread-local. Uses of the
*-bind macros allow you to specify, while *-case macros are always thread-local
- Exceptions thrown from handlers were incorrectly translated to signals
- Signaling with
:farolero.core/condition, warning, and error threw an exception - Documentation of test functions in
restart-bind said it only took the condition
1.1.1 - 2021-05-20
- Support for clj-kondo linter by adding lint hooks
- Returning early from a binding expression of
multiple-value-bind could not include multiple values multiple-value-bind could not return multiple values
1.1.0 - 2021-05-18
- Dynamic variable
*warning-printer* to allow custom code for displaying warnings - Support for
goog.string/format style format strings in simple conditions in CLJS
- Exception types in CLJS not being correctly detected in handlers
- CLJ-only interactive functions being included in CLJS for
assert and check-type
1.0.4 - 2021-05-17
- Bug where macros would be used at the incorrect time in CLJS
1.0.3 - 2021-05-13
- The project no longer relies on gen-class, instead opting to have a JVM-only dependency
- More than one
:no-error clause in handler-case was permitted - The
:no-error clause in handler-case was called even on an error
1.0.2 - 2021-04-19
- Exceptions were caught and converted to conditions around restarts
- The
wrap-exceptions use-value restart required a list
1.0.1 - 2021-04-19
- No debugger was bound by default when
throwing-debugger should have been - The throwing debugger failed to throw argument-less exceptions unwrapped
1.0.0 - 2021-04-18
- A recursive system debugger with built-in repl and multithreading support
- Implementations of additional CL control flow ops like
tagbody - Readme with basic rationale and instructions for use
- Detailed documentation to all public functions
- Specs to all public functions
- Basic implementation of conditions and restarts