minor inline caching failure string improvements
This commit is contained in:
parent
b927d8e241
commit
22f0b7e5e1
2 changed files with 9 additions and 9 deletions
12
CHANGES.md
12
CHANGES.md
|
|
@ -1,16 +1,14 @@
|
||||||
## 0.11.0 (unreleased)
|
## 0.11.0 (unreleased)
|
||||||
* BREAKING CHANGE: defpath renamed to defnav
|
|
||||||
* BREAKING CHANGE: path renamed to nav
|
|
||||||
* BREAKING CHANGE: fixed-pathed-path and variable-pathed-path renamed to fixed-pathed-nav and variabled-pathed-nav
|
|
||||||
* New `path` macro does intelligent inline caching of the provided path. The path is factored into a static portion and into params which may change on each usage of the path (e.g. local parameters). The static part is factored and compiled on the first run-through, and then re-used for all subsequent invocations. As an example, `[ALL (keypath k)]` is factored into `[ALL keypath]`, which is compiled and cached, and `[k]`, which is provided on each execution. If it is not possible to precompile the path (e.g. [ALL some-local-variable]), nothing is cached and the path will be compiled on each run-through.
|
* New `path` macro does intelligent inline caching of the provided path. The path is factored into a static portion and into params which may change on each usage of the path (e.g. local parameters). The static part is factored and compiled on the first run-through, and then re-used for all subsequent invocations. As an example, `[ALL (keypath k)]` is factored into `[ALL keypath]`, which is compiled and cached, and `[k]`, which is provided on each execution. If it is not possible to precompile the path (e.g. [ALL some-local-variable]), nothing is cached and the path will be compiled on each run-through.
|
||||||
* Added `must-cache-paths!` function to throw an error if it is not possible to factor a path into a static portion and dynamic parameters.
|
|
||||||
* BREAKING CHANGE: all select/transform/setval/replace-in functions changed to macros and moved to com.rpl.specter.macros namespace. The new macros now automatically wrap the provided path in `path` to enable inline caching. Expect up to a 100x performance improvement without using explicit precompilation, and to be within 2% to 15% of the performance of explicitly precompiled usage.
|
* BREAKING CHANGE: all select/transform/setval/replace-in functions changed to macros and moved to com.rpl.specter.macros namespace. The new macros now automatically wrap the provided path in `path` to enable inline caching. Expect up to a 100x performance improvement without using explicit precompilation, and to be within 2% to 15% of the performance of explicitly precompiled usage.
|
||||||
* Added select*/transform*/setval*/replace-in*/etc. functions that have the same functionality as the old select/transform/setval/replace-in functions.
|
* Added select*/transform*/setval*/replace-in*/etc. functions that have the same functionality as the old select/transform/setval/replace-in functions.
|
||||||
|
* Added `must-cache-paths!` function to throw an error if it is not possible to factor a path into a static portion and dynamic parameters.
|
||||||
|
* BREAKING CHANGE: `defpath` renamed to `defnav`
|
||||||
|
* BREAKING CHANGE: `path` renamed to `nav`
|
||||||
|
* BREAKING CHANGE: `fixed-pathed-path` and `variable-pathed-path` renamed to `fixed-pathed-nav` and `variabled-pathed-nav`
|
||||||
* Added `must` navigator to navigate to a key if and only if it exists in the structure
|
* Added `must` navigator to navigate to a key if and only if it exists in the structure
|
||||||
* Added `ATOM` navigator (thanks @rakeshp)
|
* Added `ATOM` navigator (thanks @rakeshp)
|
||||||
* Added "navigator constructors" that can be defined via `defnavconstructor`. These allow defining a flexible function to parameterize a defnav, and the
|
* Added "navigator constructors" that can be defined via `defnavconstructor`. These allow defining a flexible function to parameterize a defnav, and the function integrates with inline caching for high performance.
|
||||||
function integrates with inline caching for high performance.
|
|
||||||
|
|
||||||
|
|
||||||
## 0.10.0
|
## 0.10.0
|
||||||
* Make codebase bootstrap cljs compatible
|
* Make codebase bootstrap cljs compatible
|
||||||
|
|
|
||||||
|
|
@ -835,11 +835,13 @@
|
||||||
|
|
||||||
:else
|
:else
|
||||||
(magic-fail! "Var " (:sym op) " must be either a parameterized "
|
(magic-fail! "Var " (:sym op) " must be either a parameterized "
|
||||||
"navigator or a higher order pathed constructor function")
|
"navigator, a higher order pathed constructor function, "
|
||||||
|
"or a nav consructor")
|
||||||
)))
|
)))
|
||||||
(magic-fail! "Code at " (extract-original-code p) " is in "
|
(magic-fail! "Code at " (extract-original-code p) " is in "
|
||||||
"function invocation position and must be either a parameterized "
|
"function invocation position and must be either a parameterized "
|
||||||
"navigator or a higher order pathed constructor function"
|
"navigator, a higher order pathed constructor function, or a "
|
||||||
|
"nav constructor."
|
||||||
)
|
)
|
||||||
))
|
))
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue