update changelog
This commit is contained in:
parent
0046e23bfe
commit
9d2ffb907b
1 changed files with 6 additions and 3 deletions
|
|
@ -3,7 +3,7 @@
|
|||
* BREAKING CHANGE: Core protocol `Navigator` changed to `RichNavigator` and functions now have an extra argument.
|
||||
* BREAKING CHANGE: All navigators must be defined with `defnav`. The core protocols may no longer be extended. Existing types can be turned into navigators with the new `IndirectNav` protocol.
|
||||
* BREAKING CHANGE: Removed `fixed-pathed-nav` and replaced with much more generic `late-bound-nav`. `late-bound-nav` can have normal values be late-bound parameterized (not just paths). Use `late-path` function to indicate which parameters are paths. If all bindings given to `late-bound-nav` are static, the navigator will be resolved and cached immediately. See `transformed` and `selected?` for examples.
|
||||
* BREAKING CHANGE: Paths can no longer be compiled without their parameters. Instead, use the path macro to handle the parameterization.
|
||||
* BREAKING CHANGE: Paths can no longer be compiled without their parameters. Instead, use the `path` macro to handle the parameterization.
|
||||
* BREAKING CHANGE: Parameterized protocol paths now work differently since paths cannot be specified without their parameters. Instead, use the parameter names from the declaration in the extension to specify where the parameters should go. For example:
|
||||
```clojure
|
||||
(defprotocolpath MyProtPath [a])
|
||||
|
|
@ -11,8 +11,8 @@
|
|||
clojure.lang.PersistentArrayMap
|
||||
(must a))
|
||||
```
|
||||
* BREAKING CHANGE: Removed `defpathedfn` and replaced with much more generic `defdynamicnav`. Also added `dynamicnav`. `defdynamicnav` works similar to a macro and takes as input the parameters seen during inline caching. Use `dynamic-param?` to distinguish which parameters are statically specified and which are dynamic. `defdynamicnav` is typically used in conjunction with `late-bound-nav` – see implementation of `selected?` for an example.
|
||||
* Inline caching now works with locals, dynamic vars, and special forms used in the nav position. When resolved at runtime, those values will be coerced to a navigator if a vector or an implicit nav (like a keyword). Can hint with ^:direct-nav metadata to remove this coercion if know for sure those values will be implementations of `RichNavigator` interface.
|
||||
* BREAKING CHANGE: Removed `defpathedfn` and replaced with much more generic `defdynamicnav`. `defdynamicnav` works similar to a macro and takes as input the parameters seen during inline caching. Use `dynamic-param?` to distinguish which parameters are statically specified and which are dynamic. `defdynamicnav` is typically used in conjunction with `late-bound-nav` – see implementation of `selected?` for an example.
|
||||
* Inline caching now works with locals, dynamic vars, and special forms used in the nav position. When resolved at runtime, those values will be coerced to a navigator if a vector or implicit nav (e.g. keyword). Can hint with ^:direct-nav metadata to remove this coercion if know for sure those values will be implementations of `RichNavigator` interface.
|
||||
* Redesigned internals so navigators use interface dispatch rather than storing transform/selection functions as separate fields.
|
||||
* Added `local-declarepath` to assist in making local recursive or mutually recursive paths. Use with `providepath`.
|
||||
* Added `recursive-path` to assist in making recursive paths, both parameterized and unparameterized. Example:
|
||||
|
|
@ -20,9 +20,12 @@
|
|||
(let [tree-walker (recursive-path [] p (if-path vector? [ALL p] STAY))]
|
||||
(select tree-walker [1 [2 [3 4] 5] [[6]]]))
|
||||
```
|
||||
* Significantly improved performance of paths that use dynamic parameters.
|
||||
* Inline factoring now parameterizes navigators immediately when all parameters are constants (rather than factoring it to use late-bound parameterization). This creates leaner, faster code.
|
||||
* Added `IndirectNav` protocol for turning a value type into a navigator.
|
||||
* Removed `variable-pathed-nav`
|
||||
* Removed `must-cache-paths!`. No longer relevant since all paths can now be compiled and cached.
|
||||
* Added `with-inline-debug` macro that prints information about the code being analyzed and produced by the inline compiler / cacher.
|
||||
* Switched codebase from cljx to cljc
|
||||
* Improved performance of ALL and MAP-VALS on PersistentArrayMap by about 2x
|
||||
* `defnav` now generates helper functions for every method. For example, `keypath` now has helpers `keypath-select*` and `keypath-transform*`. These functions take parameters `[key structure next-fn]`
|
||||
|
|
|
|||
Loading…
Reference in a new issue