Skip to content

0.31.0: emmy.js support, TeX improvements

Compare
Choose a tag to compare
@sritchie sritchie released this 09 Jun 13:55
· 27 commits to main since this release
7b8cddc
  • #139:

    • Fixes matrix and simplification-related test failures introduced in the last couple of PRs.

    • Removes the custom ->Quaternion constructor in emmy.quaternion; this was causing build warnings in cljs. Any place you might have used ->Quaternion, please use emmy.quaternion/make.

    • Backs off the various protocol extensions in emmy.collection from IPersistentMap and IPersistentSet to the concrete types shipped with Clojure. This prevents these implementations from attaching, on the JVM side, to new defrecord instances or other types that extend those protocols.

    • Fixes a documentation error with emmy.generic/atan.

  • #135:

    • Adds some hidden features for use by emmy.js to support use of Emmy from JavaScript. These features are not used by default, but are meant to be opted-in by JS libraries that need them.

    • The function object now uses the field f-name instead of name to hold the name of the function. The name property of Function objects in JS is readonly, so we need a different property that we can modify in order to create a JS object which is both an Emmy and an ES6 function.

    • Adds the function make-es6-callable to promote an IFn object to a native JS function by birthing a new function object which delegates to the original object's apply method, and copying over the rest of the object's identity.

    • Adds the function make-es6-indexable to promote an Emmy Structure to something that behaves more like an ES6 array.

    • Structure objects are declared es6-iterable using a standard CLJS feature.

    • Using with-meta on a function creates a new object which is not a native JS function, though still invokable in Clojure. This is a steep price to pay for the privilege of adding metadata to a function, so for function objects we allow metadata to be directly applied.

      The IMeta interface can be used to retrieve this property-based metadata, but IWithMeta cannot be used to attach it (this interface guarantees the production of a new object). See emmy.function/with-meta.

  • #134:

    • Adds ->TeX handlers for matrix-by-rows and column-matrix.

    • matrices now freeze into (matrix-by-rows [...] [...]) instead of (matrix-by-rows (up ...) (up ...)).

    • functions in emmy.numerical.ode now set :compile? to true by default.

    • Fixes some TeX typos in a few of the literate notebooks.

  • #131 fixes accidental simplification of keywords to nil.