Skip to content

0.5.2: More primitive operations

Choose a tag to compare

@lukstafi lukstafi released this 08 Apr 09:37
· 5768 commits to master since this release

Highlights from README:

  • Supports a lot of primitive operations (including ternary ops), and ternary tensor operations.
  • %cd and %op support both curried and uncurried operator application syntax.
  • More flexible gradient construction via the %cd syntax (better projections inference).
  • Works on Native Windows with the C compiler backend (but CUDA backend blocked by cudajit still).

Details from the changelog:

Added

  • Lots of new primitive ops:
    • Unary: Satur01 | Exp | Log | Exp2 | Log2 | Sin | Cos | Sqrt | Recip | Recip_sqrt | Neg | Tanh_approx | Not
    • Binary: Satur01_gate | Max | Min | Mod | Cmplt | Cmpeq | Cmpne
    • Ternary: Where | FMA (non-accumulating)
  • Ternary tensor operations.
    • A differentiable where operation.
  • More flexible gradient construction via the %cd syntax (better projections inference).
  • CC backend piggy-backing on OCaml's C compiler (consistent across OSes).

Changed

  • Updated to printbox 0.12, with upstreamed graphing.
  • -pthread -> -lpthread in c_library_flags in dune files.
  • Removed Numpy support for easier compatibility on native Windows.
  • Unary (primitive) ops and relu are now named, not operator syntax.
  • Refactored %cd parsing of primitive ops.
  • %cd and %op support both curried and uncurried operator application syntax.
  • Updated to ppx_minidebug 2.2.0 with support for cross-run diffing.

Fixed

  • Numbers text rendering (consistent across OSes).
  • Moved closing row variables to stage 3, because stage 2 may need to process inequalities generating more LUBs.
  • Don't unnecessarily prevent bytecode-only build targets.